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-07 08:52:51 -0400
commitcdcb55da58a5c224f17b07f4030cd59e8b234376 (patch)
tree30b3c6ecc6e8e90fd6cfe9db9a0ec906f3fd70de
parentb8d02c9398b08ff5b29fb43b1d475f281d28e548 (diff)
downloadgtk+-cdcb55da58a5c224f17b07f4030cd59e8b234376.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 ? "+" : "-");
}