[libdazzle/libdazzle-3-28] muxer: make sure we own a copy of keys
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libdazzle/libdazzle-3-28] muxer: make sure we own a copy of keys
- Date: Wed, 4 Jul 2018 19:59:19 +0000 (UTC)
commit 92dd4cc97ed9a6a191acccee3166a73d52f6709b
Author: Christian Hergert <chergert redhat com>
Date: Wed Jul 4 01:48:02 2018 -0700
muxer: make sure we own a copy of keys
These appear to be able to be damaged out from underneath us, so
make sure that we take a copy of all of the strings before we
start iterating them.
src/util/dzl-gtk.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/src/util/dzl-gtk.c b/src/util/dzl-gtk.c
index 34760c9..4395e66 100644
--- a/src/util/dzl-gtk.c
+++ b/src/util/dzl-gtk.c
@@ -410,7 +410,7 @@ dzl_gtk_widget_mux_action_groups (GtkWidget *widget,
const gchar *mux_key)
{
const gchar * const *old_prefixes = NULL;
- g_autofree const gchar **prefixes = NULL;
+ g_auto(GStrv) prefixes = NULL;
g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (!from_widget || GTK_IS_WIDGET (from_widget));
@@ -444,10 +444,12 @@ dzl_gtk_widget_mux_action_groups (GtkWidget *widget,
if (from_widget != NULL)
{
- prefixes = gtk_widget_list_action_prefixes (from_widget);
+ g_autofree const gchar **tmp = gtk_widget_list_action_prefixes (from_widget);
- if (prefixes != NULL)
+ if (tmp != NULL)
{
+ prefixes = g_strdupv ((gchar **)tmp);
+
for (guint i = 0; prefixes [i]; i++)
{
GActionGroup *group = gtk_widget_get_action_group (from_widget, prefixes [i]);
@@ -458,14 +460,15 @@ dzl_gtk_widget_mux_action_groups (GtkWidget *widget,
if G_UNLIKELY (group == NULL)
continue;
- gtk_widget_insert_action_group (widget, prefixes [i], group);
+ gtk_widget_insert_action_group (widget, prefixes[i], group);
}
}
}
/* Store the set of muxed prefixes so that we can unmux them later. */
- g_object_set_data_full (G_OBJECT (widget), mux_key,
- g_strdupv ((gchar **)prefixes),
+ g_object_set_data_full (G_OBJECT (widget),
+ mux_key,
+ g_steal_pointer (&prefixes),
(GDestroyNotify) g_strfreev);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]