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