[gtksourceview] Completion: fix ref/unref of info window's label



commit 27320a8b4c224e7280c1ba649d05ced88e12af93
Author: SÃbastien Wilmet <swilmet src gnome org>
Date:   Mon Jul 2 19:34:56 2012 +0200

    Completion: fix ref/unref of info window's label
    
    There was a memory leak, since the 'default_info' could only be reffed.
    
    Also, it is safer to directly ref the widget, so we are sure that any
    call to gtk_source_completion_info_set_widget() doesn't remove the last
    reference.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=679271

 gtksourceview/gtksourcecompletion.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)
---
diff --git a/gtksourceview/gtksourcecompletion.c b/gtksourceview/gtksourcecompletion.c
index 70e042d..d777a33 100644
--- a/gtksourceview/gtksourcecompletion.c
+++ b/gtksourceview/gtksourcecompletion.c
@@ -967,12 +967,6 @@ update_proposal_info_real (GtkSourceCompletion         *completion,
 		}
 		else
 		{
-			/* we need to ref the default info widget before removing it */
-			if (gtk_source_completion_info_get_widget (info_window) == completion->priv->default_info)
-			{
-				g_object_ref (completion->priv->default_info);
-			}
-
 			prov_update_info = TRUE;
 		}
 	}
@@ -1949,6 +1943,8 @@ gtk_source_completion_finalize (GObject *object)
 	g_list_free (completion->priv->providers);
 	g_list_free (completion->priv->active_providers);
 
+	g_clear_object (&completion->priv->default_info);
+
 	G_OBJECT_CLASS (gtk_source_completion_parent_class)->finalize (object);
 }
 
@@ -3090,6 +3086,7 @@ initialize_ui (GtkSourceCompletion *completion)
 
 	/* Default info widget */
 	completion->priv->default_info = gtk_label_new (NULL);
+	g_object_ref_sink (completion->priv->default_info);
 
 	gtk_misc_set_alignment (GTK_MISC (completion->priv->default_info), 0.5, 0.5);
 	gtk_label_set_selectable (GTK_LABEL (completion->priv->default_info), TRUE);



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