[gtk+/gtk-3-22] entry: Avoid recursion in gtk_entry_ensure_layout
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-22] entry: Avoid recursion in gtk_entry_ensure_layout
- Date: Mon, 14 Nov 2016 20:18:44 +0000 (UTC)
commit 9a257e1f6a18a35fe6503dd4fcd707eb838e4e74
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Nov 14 15:18:25 2016 -0500
entry: Avoid recursion in gtk_entry_ensure_layout
This was unintentional, and lead to a memory leak.
gtk/gtkentry.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 312277a..2fc0116 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);
+ }
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]