summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-07 08:52:51 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-04-21 09:08:02 +0200
commit3287199f379419b7326645b7c5e40008ae90af27 (patch)
treee5557f24f420a0294c80948ea3db6a290ed9ca47
parent9be7e170b86d4d0529681b48949175fee00b2d6b (diff)
downloadgtk+-3287199f379419b7326645b7c5e40008ae90af27.tar.gz
inspector: Be safer when handling actions
Those query apis are serious about not ignoring their return value, and may not set their our arguments to anything if they return FALSE.
-rw-r--r--gtk/inspector/action-editor.c34
-rw-r--r--gtk/inspector/actions.c7
2 files changed, 30 insertions, 11 deletions
diff --git a/gtk/inspector/action-editor.c b/gtk/inspector/action-editor.c
index 616a592096..29cdec122f 100644
--- a/gtk/inspector/action-editor.c
+++ b/gtk/inspector/action-editor.c
@@ -185,18 +185,36 @@ action_state_changed_cb (GActionGroup *group,
static void
update_widgets (GtkInspectorActionEditor *r)
{
- GVariant *state = NULL;
+ GVariant *state;
if (G_IS_ACTION_GROUP (r->owner))
- g_action_group_query_action (G_ACTION_GROUP (r->owner), r->name,
- &r->enabled, &r->parameter_type, NULL, NULL,
- &state);
+ {
+ if (!g_action_group_query_action (G_ACTION_GROUP (r->owner), r->name,
+ &r->enabled, &r->parameter_type, NULL, NULL,
+ &state))
+ {
+ r->enabled = FALSE;
+ r->parameter_type = NULL;
+ state = NULL;
+ }
+ }
else if (GTK_IS_ACTION_MUXER (r->owner))
- gtk_action_muxer_query_action (GTK_ACTION_MUXER (r->owner), r->name,
- &r->enabled, &r->parameter_type, NULL, NULL,
- &state);
+ {
+ if (!gtk_action_muxer_query_action (GTK_ACTION_MUXER (r->owner), r->name,
+ &r->enabled, &r->parameter_type, NULL, NULL,
+ &state))
+ {
+ r->enabled = FALSE;
+ r->parameter_type = NULL;
+ state = NULL;
+ }
+ }
else
- state = NULL;
+ {
+ r->enabled = FALSE;
+ r->parameter_type = NULL;
+ state = NULL;
+ }
gtk_widget_set_sensitive (r->activate_button, r->enabled);
gtk_widget_set_sensitive (r->parameter_entry, r->enabled);
diff --git a/gtk/inspector/actions.c b/gtk/inspector/actions.c
index eb979bfd0c..a5d06fa7a2 100644
--- a/gtk/inspector/actions.c
+++ b/gtk/inspector/actions.c
@@ -136,9 +136,10 @@ bind_enabled_cb (GtkSignalListItemFactory *factory,
name = action_holder_get_name (ACTION_HOLDER (item));
if (G_IS_ACTION_GROUP (owner))
enabled = g_action_group_get_action_enabled (G_ACTION_GROUP (owner), name);
- else if (GTK_IS_ACTION_MUXER (owner))
- gtk_action_muxer_query_action (GTK_ACTION_MUXER (owner), name,
- &enabled, NULL, NULL, NULL, NULL);
+ else if (!GTK_IS_ACTION_MUXER (owner) ||
+ !gtk_action_muxer_query_action (GTK_ACTION_MUXER (owner), name,
+ &enabled, NULL, NULL, NULL, NULL))
+ enabled = FALSE;
gtk_label_set_label (GTK_LABEL (label), enabled ? "+" : "-");
}