summaryrefslogtreecommitdiff
path: root/gtk/gtkpathbar.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2004-04-06 01:23:26 +0000
committerFederico Mena Quintero <federico@src.gnome.org>2004-04-06 01:23:26 +0000
commit5af2f825c39cd4c242f5469ad7075bb0d0455a2d (patch)
tree347246183681b4632487c12f6d92592df18d3b05 /gtk/gtkpathbar.c
parent3bfc888d4a6fa39517f675e0b6d5cae268f46e84 (diff)
downloadgdk-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.c12
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);