mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Correct memory leak found with Valgrind.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20733 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
5c1ea616e5
commit
b83e53a9c5
@ -159,7 +159,8 @@ int
|
||||
gnc_guid_p(SCM guid_scm)
|
||||
{
|
||||
GncGUID guid;
|
||||
const gchar * str;
|
||||
gchar * str;
|
||||
int return_int;
|
||||
|
||||
if (!scm_is_string(guid_scm))
|
||||
return FALSE;
|
||||
@ -168,9 +169,12 @@ gnc_guid_p(SCM guid_scm)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
scm_dynwind_begin (0);
|
||||
str = scm_to_locale_string (guid_scm);
|
||||
|
||||
return string_to_guid(str, &guid);
|
||||
return_int = string_to_guid(str, &guid);
|
||||
scm_dynwind_free (str);
|
||||
scm_dynwind_end ();
|
||||
return return_int;
|
||||
}
|
||||
|
||||
|
||||
@ -537,7 +541,7 @@ gnc_query_path_free (GSList *path)
|
||||
}
|
||||
|
||||
static KvpValueType
|
||||
gnc_scm2KvpValueTypeype (SCM value_type_scm)
|
||||
gnc_scm2KvpValueType (SCM value_type_scm)
|
||||
{
|
||||
return scm_num2int(value_type_scm, SCM_ARG1, G_STRFUNC);
|
||||
}
|
||||
@ -663,7 +667,7 @@ gnc_scm2KvpValue (SCM value_scm)
|
||||
return NULL;
|
||||
|
||||
type_scm = SCM_CAR (value_scm);
|
||||
value_t = gnc_scm2KvpValueTypeype (type_scm);
|
||||
value_t = gnc_scm2KvpValueType (type_scm);
|
||||
|
||||
value_scm = SCM_CDR (value_scm);
|
||||
if (!scm_is_list (value_scm) || scm_is_null (value_scm))
|
||||
@ -683,8 +687,12 @@ gnc_scm2KvpValue (SCM value_scm)
|
||||
|
||||
case KVP_TYPE_STRING:
|
||||
{
|
||||
const gchar * str = scm_to_locale_string (val_scm);
|
||||
gchar * str;
|
||||
scm_dynwind_begin (0);
|
||||
str = scm_to_locale_string (val_scm);
|
||||
value = kvp_value_new_string (str);
|
||||
scm_dynwind_free (str);
|
||||
scm_dynwind_end ();
|
||||
break;
|
||||
}
|
||||
|
||||
@ -785,7 +793,7 @@ gnc_scm2KvpFrame (SCM frame_scm)
|
||||
KvpValue *value;
|
||||
SCM key_scm;
|
||||
SCM val_scm;
|
||||
const gchar *key;
|
||||
gchar *key;
|
||||
|
||||
if (!scm_is_pair (pair))
|
||||
continue;
|
||||
@ -796,14 +804,24 @@ gnc_scm2KvpFrame (SCM frame_scm)
|
||||
if (!scm_is_string (key_scm))
|
||||
continue;
|
||||
|
||||
scm_dynwind_begin (0);
|
||||
key = scm_to_locale_string (key_scm);
|
||||
if (!key)
|
||||
{
|
||||
scm_dynwind_free (key);
|
||||
scm_dynwind_end ();
|
||||
continue;
|
||||
|
||||
}
|
||||
value = gnc_scm2KvpValue (val_scm);
|
||||
if (!value) continue;
|
||||
|
||||
if (!value)
|
||||
{
|
||||
scm_dynwind_free (key);
|
||||
scm_dynwind_end ();
|
||||
continue;
|
||||
}
|
||||
kvp_frame_set_slot_nc (frame, key, value);
|
||||
scm_dynwind_free (key);
|
||||
scm_dynwind_end ();
|
||||
}
|
||||
|
||||
return frame;
|
||||
@ -952,7 +970,7 @@ gnc_scm2query_term_query_v2 (SCM qt_scm)
|
||||
{
|
||||
QofStringMatch options;
|
||||
gboolean is_regex;
|
||||
const gchar *matchstring;
|
||||
gchar *matchstring;
|
||||
|
||||
scm = SCM_CAR (qt_scm);
|
||||
qt_scm = SCM_CDR (qt_scm);
|
||||
@ -968,10 +986,13 @@ gnc_scm2query_term_query_v2 (SCM qt_scm)
|
||||
qt_scm = SCM_CDR (qt_scm);
|
||||
if (!scm_is_string (scm)) break;
|
||||
|
||||
scm_dynwind_begin (0);
|
||||
matchstring = scm_to_locale_string (scm);
|
||||
|
||||
pd = qof_query_string_predicate (compare_how, matchstring,
|
||||
options, is_regex);
|
||||
scm_dynwind_free (matchstring);
|
||||
scm_dynwind_end ();
|
||||
}
|
||||
else if (!safe_strcmp (type, QOF_TYPE_DATE))
|
||||
{
|
||||
@ -1077,7 +1098,7 @@ gnc_scm2query_term_query_v2 (SCM qt_scm)
|
||||
else if (!safe_strcmp (type, QOF_TYPE_CHAR))
|
||||
{
|
||||
QofCharMatch options;
|
||||
const gchar *char_list;
|
||||
gchar *char_list;
|
||||
|
||||
scm = SCM_CAR (qt_scm);
|
||||
qt_scm = SCM_CDR (qt_scm);
|
||||
@ -1089,9 +1110,12 @@ gnc_scm2query_term_query_v2 (SCM qt_scm)
|
||||
qt_scm = SCM_CDR (qt_scm);
|
||||
if (!scm_is_string (scm))
|
||||
break;
|
||||
scm_dynwind_begin (0);
|
||||
char_list = scm_to_locale_string (scm);
|
||||
|
||||
pd = qof_query_char_predicate (options, char_list);
|
||||
scm_dynwind_free (char_list);
|
||||
scm_dynwind_end ();
|
||||
}
|
||||
else if (!safe_strcmp (type, QOF_TYPE_KVP))
|
||||
{
|
||||
@ -1333,7 +1357,7 @@ gnc_scm2query_term_query_v1 (SCM query_term_scm)
|
||||
{
|
||||
gboolean case_sens;
|
||||
gboolean use_regexp;
|
||||
const gchar *matchstring;
|
||||
gchar *matchstring;
|
||||
|
||||
/* case_sens */
|
||||
if (scm_is_null (query_term_scm))
|
||||
@ -1357,6 +1381,7 @@ gnc_scm2query_term_query_v1 (SCM query_term_scm)
|
||||
|
||||
scm = SCM_CAR (query_term_scm);
|
||||
query_term_scm = SCM_CDR (query_term_scm);
|
||||
scm_dynwind_begin (0);
|
||||
matchstring = scm_to_locale_string (scm);
|
||||
|
||||
if (!safe_strcmp (pr_type, "pr-action"))
|
||||
@ -1391,6 +1416,8 @@ gnc_scm2query_term_query_v1 (SCM query_term_scm)
|
||||
{
|
||||
PINFO ("Unknown string predicate: %s", pr_type);
|
||||
}
|
||||
scm_dynwind_free (matchstring);
|
||||
scm_dynwind_end ();
|
||||
|
||||
}
|
||||
else if (!safe_strcmp (pd_type, "pd-cleared"))
|
||||
@ -1430,6 +1457,7 @@ gnc_scm2query_term_query_v1 (SCM query_term_scm)
|
||||
{
|
||||
GncGUID guid;
|
||||
QofIdType id_type;
|
||||
gchar *str;
|
||||
|
||||
/* guid */
|
||||
if (scm_is_null (query_term_scm))
|
||||
@ -1442,9 +1470,14 @@ gnc_scm2query_term_query_v1 (SCM query_term_scm)
|
||||
/* id type */
|
||||
scm = SCM_CAR (query_term_scm);
|
||||
query_term_scm = SCM_CDR (query_term_scm);
|
||||
id_type = g_strdup (scm_to_locale_string (scm));
|
||||
scm_dynwind_begin (0);
|
||||
str = scm_to_locale_string (scm);
|
||||
id_type = g_strdup (str);
|
||||
scm_dynwind_free (str);
|
||||
scm_dynwind_end ();
|
||||
|
||||
xaccQueryAddGUIDMatch (q, &guid, id_type, QOF_QUERY_OR);
|
||||
g_free ((void *) id_type);
|
||||
ok = TRUE;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user