summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2022-06-24 13:50:08 -0700
committerChristian Hergert <chergert@redhat.com>2022-06-24 14:30:31 -0700
commitf9c0fc4fddc6209efdad838cff0bb457084a1e81 (patch)
treeaa5d036cddd40caacfe0f84011cd00695c314665
parent354f1a783a92c389b0f2fbf58c3a16c36033034b (diff)
downloadgtk+-f9c0fc4fddc6209efdad838cff0bb457084a1e81.tar.gz
menutrackeritem: be defensive during finalize
The menu/action system tends to be incredibly re-entrant, and while fixing the misuse during finalization cycles should be a priority, this can help protect just a bit more. Related #5009
-rw-r--r--gtk/gtkmenutrackeritem.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/gtk/gtkmenutrackeritem.c b/gtk/gtkmenutrackeritem.c
index cccfb48a85..11db1f4abb 100644
--- a/gtk/gtkmenutrackeritem.c
+++ b/gtk/gtkmenutrackeritem.c
@@ -201,13 +201,10 @@ gtk_menu_tracker_item_finalize (GObject *object)
{
GtkMenuTrackerItem *self = GTK_MENU_TRACKER_ITEM (object);
- g_free (self->action_namespace);
- g_free (self->action_and_target);
-
- if (self->observable)
- g_object_unref (self->observable);
-
- g_object_unref (self->item);
+ g_clear_pointer (&self->action_namespace, g_free);
+ g_clear_pointer (&self->action_and_target, g_free);
+ g_clear_object (&self->observable);
+ g_clear_object (&self->item);
G_OBJECT_CLASS (gtk_menu_tracker_item_parent_class)->finalize (object);
}
@@ -884,7 +881,7 @@ gtk_menu_tracker_opener_finalize (GObject *object)
gtk_menu_tracker_item_set_submenu_shown (opener->item, FALSE);
- g_free (opener->submenu_action);
+ g_clear_pointer (&opener->submenu_action, g_free);
G_OBJECT_CLASS (gtk_menu_tracker_opener_parent_class)->finalize (object);
}