[gtk+/gtk-3-22] text handle: Don't leak adjustments



commit da9bd46aed82a9c1067f3cf7b680201560bd2176
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Nov 23 13:55:28 2016 -0500

    text handle: Don't leak adjustments
    
    This can happen if the weak pointer is triggered before the
    adjustments are unset. Pointed out in
    
    https://bugzilla.gnome.org/show_bug.cgi?id=774790

 gtk/gtktexthandle.c |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)
---
diff --git a/gtk/gtktexthandle.c b/gtk/gtktexthandle.c
index cc98d22..e402672 100644
--- a/gtk/gtktexthandle.c
+++ b/gtk/gtktexthandle.c
@@ -461,25 +461,21 @@ _gtk_text_handle_set_scrollable (GtkTextHandle *handle,
 
   priv = handle->priv;
 
-  if (priv->parent_scrollable)
+  if (priv->vadj)
     {
-      if (priv->vadj)
-        {
-          g_signal_handlers_disconnect_by_data (priv->vadj, handle);
-          g_object_unref (priv->vadj);
-          priv->vadj = NULL;
-        }
+      g_signal_handlers_disconnect_by_data (priv->vadj, handle);
+      g_clear_object (&priv->vadj);
+    }
 
-      if (priv->hadj)
-        {
-          g_signal_handlers_disconnect_by_data (priv->hadj, handle);
-          g_object_unref (priv->hadj);
-          priv->hadj = NULL;
-        }
- 
-      g_object_remove_weak_pointer (G_OBJECT (priv->parent_scrollable), (gpointer *) 
&priv->parent_scrollable);
+  if (priv->hadj)
+    {
+      g_signal_handlers_disconnect_by_data (priv->hadj, handle);
+      g_clear_object (&priv->hadj);
     }
 
+  if (priv->parent_scrollable)
+    g_object_remove_weak_pointer (G_OBJECT (priv->parent_scrollable), (gpointer *) &priv->parent_scrollable);
+
   priv->parent_scrollable = scrollable;
 
   if (scrollable)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]