From 41903593b4f2ce48b65c60d752e5cd87c013c466 Mon Sep 17 00:00:00 2001 From: "sky@chromium.org" Date: Thu, 1 Oct 2009 22:30:23 +0000 Subject: Fixes bug in test_shell on linux. When closing the window we can get notification of focus changes after the WebWidgetHost has been deleted, resulting in a crash. BUG=none TEST=none Review URL: http://codereview.chromium.org/255046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27778 0039d316-1c4b-4281-b951-d872f2087c98 --- webkit/tools/test_shell/webwidget_host_gtk.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/webkit/tools/test_shell/webwidget_host_gtk.cc b/webkit/tools/test_shell/webwidget_host_gtk.cc index 405dc87..97dd3f8 100644 --- a/webkit/tools/test_shell/webwidget_host_gtk.cc +++ b/webkit/tools/test_shell/webwidget_host_gtk.cc @@ -86,7 +86,7 @@ class WebWidgetHostGtkWidget { g_signal_connect(widget, "expose-event", G_CALLBACK(&HandleExpose), host); g_signal_connect(widget, "destroy", - G_CALLBACK(&HandleDestroy), NULL); + G_CALLBACK(&HandleDestroy), host); g_signal_connect(widget, "key-press-event", G_CALLBACK(&HandleKeyPress), host); g_signal_connect(widget, "key-release-event", @@ -315,7 +315,11 @@ WebWidgetHost::WebWidgetHost() } WebWidgetHost::~WebWidgetHost() { + // We may be deleted before the view_. Clear out the signals so that we don't + // attempt to invoke something on a deleted object. g_object_set_data(G_OBJECT(view_), kWebWidgetHostKey, NULL); + g_signal_handlers_disconnect_matched(view_, + G_SIGNAL_MATCH_DATA, 0, NULL, NULL, NULL, this); webwidget_->close(); } -- cgit v1.1