diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-03-11 06:47:04 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-03-11 06:47:04 -0400 |
commit | 3b45be94e8a350c40039479f336539ec65764193 (patch) | |
tree | cc4e3e0f6ffcda2f8c09cd30f4de92263d38f359 /gtk/gtkeventcontroller.c | |
parent | b4344861a09f7ec67fe5d302d9fdd00909daaaad (diff) | |
download | gtk+-3b45be94e8a350c40039479f336539ec65764193.tar.gz |
Gestures: Properly handle weak references
Every call to g_object_add_weak_pointer must be matched with
a g_object_remove_weak_pointer call, or we will get invalid
writes inside GObject.
https://bugzilla.gnome.org/show_bug.cgi?id=746013
Diffstat (limited to 'gtk/gtkeventcontroller.c')
-rw-r--r-- | gtk/gtkeventcontroller.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gtk/gtkeventcontroller.c b/gtk/gtkeventcontroller.c index 4a3e3017bc..a5cfde1e3e 100644 --- a/gtk/gtkeventcontroller.c +++ b/gtk/gtkeventcontroller.c @@ -131,7 +131,11 @@ gtk_event_controller_dispose (GObject *object) priv = gtk_event_controller_get_instance_private (controller); if (priv->widget) - _gtk_widget_remove_controller (priv->widget, controller); + { + _gtk_widget_remove_controller (priv->widget, controller); + g_object_remove_weak_pointer (G_OBJECT (priv->widget), (gpointer *) &priv->widget); + priv->widget = NULL; + } G_OBJECT_CLASS (gtk_event_controller_parent_class)->dispose (object); } |