r20758 - gnucash/trunk/src/import-export/qif-import - Correct memory handling of scm_to_locale_string per guile manual

J. Alex Aycinena alex.aycinena at code.gnucash.org
Mon Jun 13 00:42:28 EDT 2011


Author: alex.aycinena
Date: 2011-06-13 00:42:27 -0400 (Mon, 13 Jun 2011)
New Revision: 20758
Trac: http://svn.gnucash.org/trac/changeset/20758

Modified:
   gnucash/trunk/src/import-export/qif-import/dialog-account-picker.c
Log:
Correct memory handling of scm_to_locale_string per guile manual

Modified: gnucash/trunk/src/import-export/qif-import/dialog-account-picker.c
===================================================================
--- gnucash/trunk/src/import-export/qif-import/dialog-account-picker.c	2011-06-13 03:49:50 UTC (rev 20757)
+++ gnucash/trunk/src/import-export/qif-import/dialog-account-picker.c	2011-06-13 04:42:27 UTC (rev 20758)
@@ -74,7 +74,7 @@
                     GtkTreeRowReference **reference)
 {
     GtkTreeIter  iter;
-    const char   * compname;
+    char         * compname;
     char         * acctname;
     gboolean     leafnode;
     SCM          current;
@@ -92,9 +92,17 @@
         }
 
         if (scm_is_string(SCM_CAR(current)))
-            compname = scm_to_locale_string(SCM_CAR(current));
+        {
+            char * str;
+
+            scm_dynwind_begin (0); 
+            str = scm_to_locale_string (SCM_CAR(current));
+            compname = g_strdup(str);
+            scm_dynwind_free (str); 
+            scm_dynwind_end (); 
+        }
         else
-            compname = "";
+            compname = g_strdup("");
 
         if (!scm_is_null(SCM_CADDR(current)))
         {
@@ -140,6 +148,7 @@
         }
 
         g_free(acctname);
+        g_free(compname);
 
         accts = SCM_CDR(accts);
     }
@@ -327,8 +336,16 @@
     scm_gc_protect_object(wind->map_entry);
 
     /* Set the initial account to be selected. */
-    wind->selected_name = g_strdup(scm_to_locale_string(orig_acct));
+    if (scm_is_string(orig_acct))
+    {
+        char * str;
 
+        scm_dynwind_begin (0); 
+        str = scm_to_locale_string (orig_acct);
+        wind->selected_name = g_strdup(str);
+        scm_dynwind_free (str); 
+        scm_dynwind_end (); 
+    }
 
     xml = gnc_glade_xml_new("qif.glade", "QIF Import Account Picker");
 



More information about the gnucash-changes mailing list