r17135 - gnucash/branches/2.2/src/gnome-utils - [r17065] Free a few lists returned by gtk_container_get_children().

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


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

Modified:
   gnucash/branches/2.2/src/gnome-utils/dialog-options.c
   gnucash/branches/2.2/src/gnome-utils/druid-utils.c
   gnucash/branches/2.2/src/gnome-utils/gnc-dialog.c
Log:
[r17065] Free a few lists returned by gtk_container_get_children().


Modified: gnucash/branches/2.2/src/gnome-utils/dialog-options.c
===================================================================
--- gnucash/branches/2.2/src/gnome-utils/dialog-options.c	2008-04-26 16:49:46 UTC (rev 17134)
+++ gnucash/branches/2.2/src/gnome-utils/dialog-options.c	2008-04-26 16:49:55 UTC (rev 17135)
@@ -182,6 +182,7 @@
   ab_widget = g_list_nth_data(widget_list, GNC_RD_WID_AB_WIDGET_POS);
   rel_button = g_list_nth_data(widget_list, GNC_RD_WID_REL_BUTTON_POS);
   rel_widget = g_list_nth_data(widget_list, GNC_RD_WID_REL_WIDGET_POS);
+  g_list_free(widget_list);
 
   if(use_absolute)
   {
@@ -418,6 +419,7 @@
     if (safe_strcmp (date_type, "both") == 0) {
       children = gtk_container_get_children (GTK_CONTAINER (widget));
       widget = g_list_nth_data (children, GNC_RD_WID_REL_WIDGET_POS);
+      g_list_free(children);
     }
     free (date_type);
   }
@@ -2286,6 +2288,7 @@
 	  widget_list = gtk_container_get_children(GTK_CONTAINER(widget));
 	  rel_date_widget = g_list_nth_data(widget_list,
 					    GNC_RD_WID_REL_WIDGET_POS);
+	  g_list_free(widget_list);
 	  gnc_date_option_set_select_method(option, FALSE, TRUE);
 #ifdef GTKCOMBOBOX_TOOLTIPS_WORK
 	  gtk_combo_box_set_active(GTK_COMBO_BOX(rel_date_widget), index);
@@ -2320,6 +2323,7 @@
 	  widget_list = gtk_container_get_children(GTK_CONTAINER(widget));
 	  ab_widget = g_list_nth_data(widget_list,
 				      GNC_RD_WID_AB_WIDGET_POS);
+	  g_list_free(widget_list);
 	  gnc_date_option_set_select_method(option, TRUE, TRUE);
 	  gnc_date_edit_set_time(GNC_DATE_EDIT(ab_widget), ts.tv_sec);
 	}
@@ -2552,6 +2556,7 @@
 
     list = gtk_container_get_children (GTK_CONTAINER (widget));
     box = list->data;
+    g_list_free(list);
 
     list = gtk_container_get_children (GTK_CONTAINER (box));
     for (i = 0; i < index && list; i++)
@@ -2559,6 +2564,7 @@
     g_return_val_if_fail (list, TRUE);
 
     button = list->data;
+    g_list_free(list);
     val = g_object_get_data (G_OBJECT (button), "gnc_radiobutton_index");
     g_return_val_if_fail (GPOINTER_TO_INT (val) == index, TRUE);
 
@@ -2719,6 +2725,7 @@
     ab_button = g_list_nth_data(widget_list,  GNC_RD_WID_AB_BUTTON_POS);
     ab_widget = g_list_nth_data(widget_list,  GNC_RD_WID_AB_WIDGET_POS);
     rel_widget = g_list_nth_data(widget_list, GNC_RD_WID_REL_WIDGET_POS);
+    g_list_free(widget_list);
 
     /* if it's an absolute date */
     if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ab_button)))

Modified: gnucash/branches/2.2/src/gnome-utils/druid-utils.c
===================================================================
--- gnucash/branches/2.2/src/gnome-utils/druid-utils.c	2008-04-26 16:49:46 UTC (rev 17134)
+++ gnucash/branches/2.2/src/gnome-utils/druid-utils.c	2008-04-26 16:49:55 UTC (rev 17135)
@@ -99,6 +99,7 @@
 gnc_druid_set_colors (GnomeDruid *druid)
 {
   GList *pages = gtk_container_get_children (GTK_CONTAINER (druid));
+  GList *item = pages;
   GdkColor bluish;
   GdkColor white;
   GdkColormap *cm;
@@ -119,9 +120,9 @@
   gdk_colormap_alloc_color(cm, &bluish, FALSE, TRUE);
   gdk_colormap_alloc_color(cm, &white, FALSE, TRUE);
 
-  while (pages != NULL)
+  while (item != NULL)
   {
-    GnomeDruidPage *page = GNOME_DRUID_PAGE (pages->data);
+    GnomeDruidPage *page = GNOME_DRUID_PAGE (item->data);
 
     if (GNOME_IS_DRUID_PAGE_EDGE (page))
     {
@@ -140,6 +141,7 @@
       gnome_druid_page_standard_set_logo_background (page_standard, &bluish);
       gnome_druid_page_standard_set_title_foreground (page_standard, &white);
     }    
-    pages = g_list_next (pages);
+    item = item->next;
   }
+  g_list_free(pages);
 }

Modified: gnucash/branches/2.2/src/gnome-utils/gnc-dialog.c
===================================================================
--- gnucash/branches/2.2/src/gnome-utils/gnc-dialog.c	2008-04-26 16:49:46 UTC (rev 17134)
+++ gnucash/branches/2.2/src/gnome-utils/gnc-dialog.c	2008-04-26 16:49:55 UTC (rev 17135)
@@ -291,8 +291,11 @@
     if (GTK_IS_BOX(w)) {
         GList *children = gtk_container_get_children(GTK_CONTAINER(w));
         if (g_list_length(children) == 1) {
-            return gnc_dialog_get_widget_smart(GTK_WIDGET(children->data));
+            GtkWidget *child = GTK_WIDGET(children->data);
+            g_list_free(children);
+            return gnc_dialog_get_widget_smart(child);
         }
+        g_list_free(children);
     }
     return w;
 }



More information about the gnucash-changes mailing list