diff options
author | Federico Mena Quintero <federico@ximian.com> | 2004-04-06 01:23:26 +0000 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2004-04-06 01:23:26 +0000 |
commit | 5af2f825c39cd4c242f5469ad7075bb0d0455a2d (patch) | |
tree | 347246183681b4632487c12f6d92592df18d3b05 /gtk/gtkpathbar.c | |
parent | 3bfc888d4a6fa39517f675e0b6d5cae268f46e84 (diff) | |
download | gdk-pixbuf-5af2f825c39cd4c242f5469ad7075bb0d0455a2d.tar.gz |
Ref/sink the buttons. Also, free them correctly upon failure. Based on a
2004-04-05 Federico Mena Quintero <federico@ximian.com>
* gtk/gtkpathbar.c (_gtk_path_bar_set_path): Ref/sink the
buttons. Also, free them correctly upon failure. Based on a
patch by Morten Welinder, fixes #137956.
Diffstat (limited to 'gtk/gtkpathbar.c')
-rw-r--r-- | gtk/gtkpathbar.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gtk/gtkpathbar.c b/gtk/gtkpathbar.c index 4a04dbacd..c2139c13c 100644 --- a/gtk/gtkpathbar.c +++ b/gtk/gtkpathbar.c @@ -1058,6 +1058,9 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar, gtk_file_info_free (file_info); gtk_file_path_free (path); + g_object_ref (button_data->button); + gtk_object_sink (GTK_OBJECT (button_data->button)); + new_buttons = g_list_prepend (new_buttons, button_data); if (button_data->type != NORMAL_BUTTON) @@ -1089,9 +1092,12 @@ _gtk_path_bar_set_path (GtkPathBar *path_bar, for (l = new_buttons; l; l = l->next) { - GtkWidget *button = BUTTON_DATA (l->data)->button; - gtk_widget_destroy (button); - gtk_widget_unref (button); + ButtonData *button_data; + + button_data = BUTTON_DATA (l->data); + + gtk_widget_unref (button_data->button); + button_data_free (button_data); } g_list_free (new_buttons); |