diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 16b7f2a7cb..20653b4fca 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -2463,12 +2463,19 @@ static void gtk_entry_dispose (GObject *object) { GtkEntry *entry = GTK_ENTRY (object); + GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry); gtk_entry_set_icon_from_pixbuf (entry, GTK_ENTRY_ICON_PRIMARY, NULL); gtk_entry_set_icon_tooltip_markup (entry, GTK_ENTRY_ICON_PRIMARY, NULL); gtk_entry_set_icon_from_pixbuf (entry, GTK_ENTRY_ICON_SECONDARY, NULL); gtk_entry_set_icon_tooltip_markup (entry, GTK_ENTRY_ICON_SECONDARY, NULL); - gtk_entry_set_buffer (entry, NULL); + + if (priv->buffer) + { + buffer_disconnect_signals (entry); + g_object_unref (priv->buffer); + priv->buffer = NULL; + } G_OBJECT_CLASS (gtk_entry_parent_class)->dispose (object); }