From 71d7b97a90a5ecdbeca5ead6d7dfe6cdcd6d704c Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 19 Dec 2009 13:46:18 +0100 Subject: [PATCH] Disconnect signal handlers on adjustment in destroy handler Not removing the signal handler caused crashes if the adjustment survived longer than the scrolled window and still emitted signals. This could happen inside WebKit. --- gtk/gtkscrolledwindow.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 0101f4743..718bc45c3 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -858,6 +858,9 @@ gtk_scrolled_window_destroy (GtkObject *object) if (scrolled_window->hscrollbar) { + g_signal_handlers_disconnect_by_func (gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar)), + gtk_scrolled_window_adjustment_changed, + scrolled_window); gtk_widget_unparent (scrolled_window->hscrollbar); gtk_widget_destroy (scrolled_window->hscrollbar); g_object_unref (scrolled_window->hscrollbar); @@ -865,6 +868,9 @@ gtk_scrolled_window_destroy (GtkObject *object) } if (scrolled_window->vscrollbar) { + g_signal_handlers_disconnect_by_func (gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar)), + gtk_scrolled_window_adjustment_changed, + scrolled_window); gtk_widget_unparent (scrolled_window->vscrollbar); gtk_widget_destroy (scrolled_window->vscrollbar); g_object_unref (scrolled_window->vscrollbar); -- 2.43.2