From 3289b3efbf336db33f869a11f82fed2765ad5a0e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 19 Mar 2013 20:35:28 -0400 Subject: [PATCH] GtkHeaderBar: Don't leak Should have a finalize function, if there's strings to free. Also avoid some pointless extra ref on custom title widgets. --- gtk/gtkheaderbar.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gtk/gtkheaderbar.c b/gtk/gtkheaderbar.c index 3058c9e6f6..88bc1ab925 100644 --- a/gtk/gtkheaderbar.c +++ b/gtk/gtkheaderbar.c @@ -682,12 +682,11 @@ gtk_header_bar_set_custom_title (GtkHeaderBar *bar, priv->custom_title = NULL; gtk_widget_unparent (custom); - g_object_unref (custom); } if (title_widget) { - priv->custom_title = g_object_ref (title_widget); + priv->custom_title = title_widget; gtk_widget_hide (priv->label); @@ -726,6 +725,16 @@ gtk_header_bar_get_custom_title (GtkHeaderBar *bar) return bar->priv->custom_title; } +static void +gtk_header_bar_finalize (GObject *object) +{ + GtkHeaderBar *bar = GTK_HEADER_BAR (object); + + g_free (bar->priv->title); + + G_OBJECT_CLASS (gtk_header_bar_parent_class)->finalize (object); +} + static void gtk_header_bar_get_property (GObject *object, guint prop_id, @@ -1048,6 +1057,7 @@ gtk_header_bar_class_init (GtkHeaderBarClass *class) GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); GtkContainerClass *container_class = GTK_CONTAINER_CLASS (class); + object_class->finalize = gtk_header_bar_finalize; object_class->get_property = gtk_header_bar_get_property; object_class->set_property = gtk_header_bar_set_property;