diff options
author | Federico Mena Quintero <federico@gnome.org> | 2022-10-18 18:54:08 -0500 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2022-11-07 16:31:30 -0600 |
commit | b9093a3ee00ec420676664fd9a80da7ceb6a5772 (patch) | |
tree | 5dc04ab429f805d6e77106c24c8850dbac02ea76 /registryd | |
parent | f366b4ade2846a0ff4b6edaf5eaacc9256f10aeb (diff) | |
download | at-spi2-core-b9093a3ee00ec420676664fd9a80da7ceb6a5772.tar.gz |
impl_Unembed() - use demarshal_reference() instead of duplicating it here
Diffstat (limited to 'registryd')
-rw-r--r-- | registryd/registry.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/registryd/registry.c b/registryd/registry.c index e98e8c14..aa1ffb32 100644 --- a/registryd/registry.c +++ b/registryd/registry.c @@ -470,27 +470,20 @@ impl_Embed (DBusMessage *message, SpiRegistry *registry) static DBusMessage* impl_Unembed (DBusMessage *message, SpiRegistry *registry) { - DBusMessageIter iter, iter_struct; - gchar *app_name, *obj_path; + SpiReference *app_reference; guint index; - dbus_message_iter_init (message, &iter); - dbus_message_iter_recurse (&iter, &iter_struct); - if (!(dbus_message_iter_get_arg_type (&iter_struct) == DBUS_TYPE_STRING)) - goto error; - dbus_message_iter_get_basic (&iter_struct, &app_name); - if (!dbus_message_iter_next (&iter_struct)) - goto error; - if (!(dbus_message_iter_get_arg_type (&iter_struct) == DBUS_TYPE_OBJECT_PATH)) - goto error; - dbus_message_iter_get_basic (&iter_struct, &obj_path); + if (demarshal_reference (message, &app_reference) != DEMARSHAL_STATUS_SUCCESS) + { + return dbus_message_new_error (message, DBUS_ERROR_FAILED, "Invalid arguments"); + } - if (find_index_of_reference (registry->apps, app_name, obj_path, &index)) + if (find_index_of_reference (registry->apps, app_reference->name, app_reference->path, &index)) remove_application (registry, index); + spi_reference_free (app_reference); + return NULL; -error: - return dbus_message_new_error (message, DBUS_ERROR_FAILED, "Invalid arguments"); } /* org.at_spi.Component interface */ |