From 9a257e1f6a18a35fe6503dd4fcd707eb838e4e74 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 14 Nov 2016 15:18:25 -0500 Subject: [PATCH] entry: Avoid recursion in gtk_entry_ensure_layout This was unintentional, and lead to a memory leak. --- gtk/gtkentry.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 312277a3e9..2fc01169aa 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -7485,6 +7485,7 @@ gtk_entry_set_buffer (GtkEntry *entry, { GtkEntryPrivate *priv; GObject *obj; + gboolean had_buffer = FALSE; g_return_if_fail (GTK_IS_ENTRY (entry)); @@ -7498,6 +7499,7 @@ gtk_entry_set_buffer (GtkEntry *entry, if (priv->buffer) { + had_buffer = TRUE; buffer_disconnect_signals (entry); g_object_unref (priv->buffer); } @@ -7518,8 +7520,11 @@ gtk_entry_set_buffer (GtkEntry *entry, g_object_notify_by_pspec (obj, entry_props[PROP_INVISIBLE_CHAR_SET]); g_object_thaw_notify (obj); - gtk_editable_set_position (GTK_EDITABLE (entry), 0); - gtk_entry_recompute (entry); + if (had_buffer) + { + gtk_editable_set_position (GTK_EDITABLE (entry), 0); + gtk_entry_recompute (entry); + } } /**