summaryrefslogtreecommitdiffstats
path: root/webkit/tools
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/tools')
-rw-r--r--webkit/tools/test_shell/webwidget_host_gtk.cc6
1 files changed, 5 insertions, 1 deletions
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();
}