Bug 551699 – gtk_scrolled_window_destroy() is broken

2008-09-10  Björn Lindqvist  <bjourne@gmail.com>

	Bug 551699 – gtk_scrolled_window_destroy() is broken

	* gtk/gtkscrolledwindow.c (gtk_scrolled_window_destroy,
	gtk_scrolled_window_finalize): Check that the [hv]scrollbar
	attributes are not-NULL before destroying and unparenting them.

svn path=/trunk/; revision=21341
This commit is contained in:
Björn Lindqvist 2008-09-10 20:21:59 +00:00 committed by Björn Lindqvist
parent d7425c0c5f
commit 7b7f8fc310
2 changed files with 22 additions and 17 deletions

View File

@ -1,3 +1,11 @@
2008-09-10 Björn Lindqvist <bjourne@gmail.com>
Bug 551699 gtk_scrolled_window_destroy() is broken
* gtk/gtkscrolledwindow.c (gtk_scrolled_window_destroy,
gtk_scrolled_window_finalize): Check that the [hv]scrollbar
attributes are not-NULL before destroying and unparenting them.
2008-09-10 Simos Xenitellis <simos@gnome.org>
Bug 550676 Memory leak, update keyboard layout data structure

View File

@ -100,7 +100,6 @@ enum
};
static void gtk_scrolled_window_destroy (GtkObject *object);
static void gtk_scrolled_window_finalize (GObject *object);
static void gtk_scrolled_window_set_property (GObject *object,
guint prop_id,
const GValue *value,
@ -192,7 +191,6 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class)
widget_class = (GtkWidgetClass*) class;
container_class = (GtkContainerClass*) class;
gobject_class->finalize = gtk_scrolled_window_finalize;
gobject_class->set_property = gtk_scrolled_window_set_property;
gobject_class->get_property = gtk_scrolled_window_get_property;
@ -786,25 +784,24 @@ gtk_scrolled_window_destroy (GtkObject *object)
{
GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object);
gtk_widget_unparent (scrolled_window->hscrollbar);
gtk_widget_unparent (scrolled_window->vscrollbar);
gtk_widget_destroy (scrolled_window->hscrollbar);
gtk_widget_destroy (scrolled_window->vscrollbar);
if (scrolled_window->hscrollbar)
{
gtk_widget_unparent (scrolled_window->hscrollbar);
gtk_widget_destroy (scrolled_window->hscrollbar);
g_object_unref (scrolled_window->hscrollbar);
scrolled_window->hscrollbar = NULL;
}
if (scrolled_window->vscrollbar)
{
gtk_widget_unparent (scrolled_window->vscrollbar);
gtk_widget_destroy (scrolled_window->vscrollbar);
g_object_unref (scrolled_window->vscrollbar);
scrolled_window->vscrollbar = NULL;
}
GTK_OBJECT_CLASS (gtk_scrolled_window_parent_class)->destroy (object);
}
static void
gtk_scrolled_window_finalize (GObject *object)
{
GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object);
g_object_unref (scrolled_window->hscrollbar);
g_object_unref (scrolled_window->vscrollbar);
G_OBJECT_CLASS (gtk_scrolled_window_parent_class)->finalize (object);
}
static void
gtk_scrolled_window_set_property (GObject *object,
guint prop_id,