r17130 - gnucash/branches/2.2/src - [r17036] Fix memory leaks after usage of gtk_tree_model_get().

Andreas Köhler andi5 at cvs.gnucash.org
Sat Apr 26 12:49:09 EDT 2008


Author: andi5
Date: 2008-04-26 12:49:08 -0400 (Sat, 26 Apr 2008)
New Revision: 17130
Trac: http://svn.gnucash.org/trac/changeset/17130

Modified:
   gnucash/branches/2.2/src/core-utils/gnc-gtk-utils.c
   gnucash/branches/2.2/src/gnome-utils/druid-gnc-xml-import.c
   gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-account.c
   gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-commodity.c
   gnucash/branches/2.2/src/import-export/qif-import/dialog-account-picker.c
   gnucash/branches/2.2/src/register/register-gnome/gnucash-item-list.c
   gnucash/branches/2.2/src/report/report-gnome/dialog-style-sheet.c
Log:
[r17036] Fix memory leaks after usage of gtk_tree_model_get().

String results are always newly allocated and should be freed.
Similarly, GObjects should be unreffed, but I have not found such a
case.


Modified: gnucash/branches/2.2/src/core-utils/gnc-gtk-utils.c
===================================================================
--- gnucash/branches/2.2/src/core-utils/gnc-gtk-utils.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/core-utils/gnc-gtk-utils.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -43,8 +43,9 @@
 {
   GtkTreeModel *model;
   GtkTreeIter iter;
-  const gchar *tree_string;
+  gchar *tree_string;
   gint column, index, id;
+  gboolean match;
 
   model = gtk_combo_box_get_model(GTK_COMBO_BOX(cbe));
   if (!gtk_tree_model_get_iter_first(model, &iter)) {
@@ -56,7 +57,9 @@
   column = gtk_combo_box_entry_get_text_column(cbe);
   do {
     gtk_tree_model_get(model, &iter, column, &tree_string, -1);
-    if (g_utf8_collate(text, tree_string) != 0)
+    match = g_utf8_collate(text, tree_string) == 0;
+    g_free(tree_string);
+    if (!match)
       continue;
 
     /* Found a matching string */
@@ -120,6 +123,7 @@
   column = gtk_combo_box_entry_get_text_column(cbe);
   gtk_tree_model_get(comp_model, comp_iter, column, &text, -1);
   gnc_cbe_set_by_string(cbe, text);
+  g_free(text);
   return FALSE;
 }
 

Modified: gnucash/branches/2.2/src/gnome-utils/druid-gnc-xml-import.c
===================================================================
--- gnucash/branches/2.2/src/gnome-utils/druid-gnc-xml-import.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/gnome-utils/druid-gnc-xml-import.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -1113,6 +1113,7 @@
   gtk_tree_model_get (gtk_combo_box_get_model (combo), &iter,
                       0, &enc_string, -1);
   curr_enc = g_quark_from_string (enc_string);
+  g_free (enc_string);
 
   if (data->default_encoding == curr_enc)
     return;

Modified: gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-account.c
===================================================================
--- gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-account.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-account.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -270,7 +270,7 @@
   GtkTreeModel *model;
   GtkTreeIter iter1, iter2;
   const Account *account1, *account2;
-  const gchar *str1, *str2;
+  gchar *str1, *str2;
   gint column = GPOINTER_TO_INT(user_data);
   gint result;
 
@@ -281,6 +281,8 @@
   gtk_tree_model_get(GTK_TREE_MODEL(model), &iter2,  column, &str2, -1);
 
   result = safe_utf8_collate(str1, str2);
+  g_free(str1);
+  g_free(str2);
   if (result != 0)
     return result;
   return xaccAccountOrder(account1, account2);

Modified: gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-commodity.c
===================================================================
--- gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-commodity.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/gnome-utils/gnc-tree-view-commodity.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -277,7 +277,7 @@
   GtkTreeModel *model;
   GtkTreeIter iter_a, iter_b;
   gnc_commodity *comm_a, *comm_b;
-  const gchar *str1, *str2;
+  gchar *str1, *str2;
   gint column = GPOINTER_TO_INT(user_data);
   gint result;
 
@@ -290,6 +290,8 @@
   gtk_tree_model_get(GTK_TREE_MODEL(model), &iter_b,  column, &str2, -1);
 
   result = safe_utf8_collate(str1, str2);
+  g_free(str1);
+  g_free(str2);
   if (result != 0)
     return result;
   return default_sort(comm_a, comm_b);

Modified: gnucash/branches/2.2/src/import-export/qif-import/dialog-account-picker.c
===================================================================
--- gnucash/branches/2.2/src/import-export/qif-import/dialog-account-picker.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/import-export/qif-import/dialog-account-picker.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -199,12 +199,10 @@
   SCM name_setter = scm_c_eval_string("qif-map-entry:set-gnc-name!");
   GtkTreeModel *model;
   GtkTreeIter iter;
-  gchar *name;
 
   g_free(wind->selected_name);
   if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
-    gtk_tree_model_get(model, &iter, ACCOUNT_COL_FULLNAME, &name, -1);
-    wind->selected_name = g_strdup(name);
+    gtk_tree_model_get(model, &iter, ACCOUNT_COL_FULLNAME, &wind->selected_name, -1);
     scm_call_2(name_setter, wind->map_entry, scm_makfrom0str(wind->selected_name));
   } else {
     wind->selected_name = NULL;

Modified: gnucash/branches/2.2/src/register/register-gnome/gnucash-item-list.c
===================================================================
--- gnucash/branches/2.2/src/register/register-gnome/gnucash-item-list.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/register/register-gnome/gnucash-item-list.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -124,9 +124,12 @@
 {
         FindSelectionData *to_find = (FindSelectionData*)data;
         gchar *iterStr;
+        gboolean found;
 
         gtk_tree_model_get(model, iter, 0, &iterStr, -1);
-        if (safe_strcmp(to_find->string_to_find, iterStr) == 0)
+        found = safe_strcmp(to_find->string_to_find, iterStr) == 0;
+        g_free(iterStr);
+        if (found)
         {
                 to_find->found_path = gtk_tree_path_copy(path);
                 return TRUE;
@@ -283,7 +286,7 @@
                                        gnc_item_list_signals[ACTIVATE_ITEM],
                                        0, 
                                        string);
-
+                        g_free(string);
                         return TRUE;
                 default:
                         return FALSE;
@@ -313,6 +316,7 @@
                                        gnc_item_list_signals[ACTIVATE_ITEM], 
                                        0, 
                                        string);
+                        g_free(string);
                         return TRUE;
 
 		case GDK_Page_Up:

Modified: gnucash/branches/2.2/src/report/report-gnome/dialog-style-sheet.c
===================================================================
--- gnucash/branches/2.2/src/report/report-gnome/dialog-style-sheet.c	2008-04-26 16:48:56 UTC (rev 17129)
+++ gnucash/branches/2.2/src/report/report-gnome/dialog-style-sheet.c	2008-04-26 16:49:08 UTC (rev 17130)
@@ -303,6 +303,7 @@
       gtk_list_store_set (ss->list_store, &iter,
 			  COLUMN_DIALOG, ssinfo,
 			  -1);
+      g_free(name);
     }
     break;
     



More information about the gnucash-changes mailing list