diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-04-07 08:52:51 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-04-07 08:52:51 -0400 |
commit | cdcb55da58a5c224f17b07f4030cd59e8b234376 (patch) | |
tree | 30b3c6ecc6e8e90fd6cfe9db9a0ec906f3fd70de | |
parent | b8d02c9398b08ff5b29fb43b1d475f281d28e548 (diff) | |
download | gtk+-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.c | 34 | ||||
-rw-r--r-- | gtk/inspector/actions.c | 7 |
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 ? "+" : "-"); } |