mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Correct memory handling of scm_to_locale_string per guile manual
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@20744 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -1322,11 +1322,14 @@ gnc_parse_time_to_timet(const gchar *s, const gchar *format)
|
||||
gchar *gnc_scm_to_locale_string(SCM scm_string)
|
||||
{
|
||||
gchar* s;
|
||||
char* x = scm_to_locale_string(scm_string);
|
||||
char * str;
|
||||
|
||||
/* scm_to_locale_string() returns a malloc'ed string in guile-1.8
|
||||
(but not in guile-1.6). Copy to a g_malloc'ed one. */
|
||||
s = g_strdup(x);
|
||||
free(x);
|
||||
scm_dynwind_begin (0);
|
||||
str = scm_to_locale_string(scm_string);
|
||||
|
||||
/* prevent memory leaks in scm_to_locale_string() per guile manual; see 'http://www.gnu.org/software/guile/manual/html_node/Dynamic-Wind.html#Dynamic-Wind' */
|
||||
s = g_strdup(str);
|
||||
scm_dynwind_free (str);
|
||||
scm_dynwind_end ();
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ test_query (Query *q, SCM val2str)
|
||||
SCM res_q;
|
||||
SCM args = SCM_EOL;
|
||||
Query *q2;
|
||||
const gchar * str;
|
||||
char * str;
|
||||
gchar *str2 = NULL;
|
||||
|
||||
scm_q = gnc_query2scm (q);
|
||||
@@ -30,8 +30,11 @@ test_query (Query *q, SCM val2str)
|
||||
args = scm_cons (scm_makfrom0str ("'"), scm_cons (str_q, SCM_EOL));
|
||||
str_q = scm_string_append (args);
|
||||
|
||||
scm_dynwind_begin (0);
|
||||
str = scm_to_locale_string (str_q);
|
||||
if (str) str2 = g_strdup(str);
|
||||
scm_dynwind_free (str);
|
||||
scm_dynwind_end ();
|
||||
if (str2)
|
||||
{
|
||||
res_q = scm_c_eval_string (str2);
|
||||
|
||||
Reference in New Issue
Block a user