summaryrefslogtreecommitdiff
path: root/gtk/gtkpopover.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-04-08 20:20:38 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-04-09 06:39:11 -0400
commitac931e95060c10dd44d0b6331d0f38e9b777d436 (patch)
treeedb68268907a865d9c0fd951f162acf27a075796 /gtk/gtkpopover.c
parentb2e19866ea2ccaca9593f4f4b954ab9d70791dab (diff)
downloadgtk+-ac931e95060c10dd44d0b6331d0f38e9b777d436.tar.gz
popover: Remove signal handlers in dispose
If we don't, they may get triggered at an inopportune time later, causing us to crash. See https://bugzilla.redhat.com/show_bug.cgi?id=1203499 https://bugzilla.gnome.org/show_bug.cgi?id=747539
Diffstat (limited to 'gtk/gtkpopover.c')
-rw-r--r--gtk/gtkpopover.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c
index 97d13aa861..37064c829a 100644
--- a/gtk/gtkpopover.c
+++ b/gtk/gtkpopover.c
@@ -304,7 +304,10 @@ gtk_popover_dispose (GObject *object)
GtkPopoverPrivate *priv = popover->priv;
if (priv->window)
- _gtk_window_remove_popover (priv->window, GTK_WIDGET (object));
+ {
+ g_signal_handlers_disconnect_by_data (priv->window, popover);
+ _gtk_window_remove_popover (priv->window, GTK_WIDGET (object));
+ }
priv->window = NULL;