diff --git a/src/clipboard.c b/src/clipboard.c index edf1358ce..8dab05611 100644 --- a/src/clipboard.c +++ b/src/clipboard.c @@ -113,7 +113,7 @@ handle_set_selection (XdpDbusClipboard *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -156,7 +156,7 @@ handle_set_selection (XdpDbusClipboard *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_clipboard_call_set_selection ( impl, arg_session_handle, options, NULL, NULL, NULL); diff --git a/src/dynamic-launcher.c b/src/dynamic-launcher.c index 4ea92bfe4..50357126b 100644 --- a/src/dynamic-launcher.c +++ b/src/dynamic-launcher.c @@ -451,7 +451,7 @@ set_launcher_data_for_token (const char *token, { g_autoptr(GMutexLocker) locker = g_mutex_locker_new (&transient_permissions_lock); guint timeout_id; - GVariant *launcher_data_wrapped; + g_autoptr(GVariant) launcher_data_wrapped = NULL; if (!transient_permissions) { @@ -464,11 +464,12 @@ set_launcher_data_for_token (const char *token, */ timeout_id = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, 300, install_token_timeout, g_strdup (token), g_free); - launcher_data_wrapped = g_variant_new ("(vu)", launcher_data, timeout_id); + launcher_data_wrapped = + g_variant_ref_sink (g_variant_new ("(vu)", launcher_data, timeout_id)); g_hash_table_insert (transient_permissions, g_strdup (token), - g_variant_ref_sink (launcher_data_wrapped)); + g_steal_pointer (&launcher_data_wrapped)); } static void @@ -477,7 +478,6 @@ prepare_install_done (GObject *source, gpointer data) { g_autoptr(Request) request = data; - GVariant *launcher_data; guint response = 2; g_autoptr(GVariant) results = NULL; g_autoptr(GError) error = NULL; @@ -524,6 +524,8 @@ prepare_install_done (GObject *source, } else { + GVariant *launcher_data; + /* Save the token in memory and return it to the caller */ launcher_data = g_variant_new ("(svss)", chosen_name, chosen_icon, icon_format, icon_size); set_launcher_data_for_token (token, launcher_data); @@ -686,7 +688,6 @@ handle_request_install_token (XdpDbusDynamicLauncher *object, Call *call = call_from_invocation (invocation); const char *app_id = xdp_app_info_get_id (call->app_info); g_autoptr(GError) error = NULL; - GVariant *launcher_data; g_autofree char *token = NULL; g_autofree char *icon_format = NULL; g_autofree char *icon_size = NULL; @@ -716,6 +717,8 @@ handle_request_install_token (XdpDbusDynamicLauncher *object, if (response == 0) { + GVariant *launcher_data; + /* Do some validation on the icon before saving it */ if (!validate_serialized_icon (arg_icon_v, &icon_format, &icon_size)) { diff --git a/src/global-shortcuts.c b/src/global-shortcuts.c index 8e40fd69a..a9a04c5aa 100644 --- a/src/global-shortcuts.c +++ b/src/global-shortcuts.c @@ -235,7 +235,7 @@ handle_create_session (XdpDbusGlobalShortcuts *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); impl_request = xdp_dbus_impl_request_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (impl)), G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, @@ -390,7 +390,7 @@ handle_bind_shortcuts (XdpDbusGlobalShortcuts *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_variant_builder_init (&shortcuts_builder, G_VARIANT_TYPE_ARRAY); if (!xdp_verify_shortcuts (arg_shortcuts, &shortcuts_builder, @@ -400,7 +400,7 @@ handle_bind_shortcuts (XdpDbusGlobalShortcuts *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - shortcuts = g_variant_builder_end (&shortcuts_builder); + shortcuts = g_variant_ref_sink (g_variant_builder_end (&shortcuts_builder)); session = acquire_session (arg_session_handle, request); if (!session) @@ -517,7 +517,7 @@ handle_list_shortcuts (XdpDbusGlobalShortcuts *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); session = acquire_session (arg_session_handle, request); if (!session) diff --git a/src/input-capture.c b/src/input-capture.c index f9682f1a7..018a7e28c 100644 --- a/src/input-capture.c +++ b/src/input-capture.c @@ -233,7 +233,7 @@ handle_create_session (XdpDbusInputCapture *object, g_autoptr(XdpDbusImplRequest) impl_request = NULL; g_autoptr(GError) error = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; Session *session; REQUEST_AUTOLOCK (request); @@ -269,7 +269,7 @@ handle_create_session (XdpDbusInputCapture *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session, @@ -325,12 +325,12 @@ get_zones_done (GObject *source_object, if (request->exported) { - if (response != 0) + if (!results) { GVariantBuilder results_builder; g_variant_builder_init (&results_builder, G_VARIANT_TYPE_VARDICT); - results = g_variant_builder_end (&results_builder); + results = g_variant_ref_sink (g_variant_builder_end (&results_builder)); } xdp_dbus_request_emit_response (XDP_DBUS_REQUEST (request), response, results); @@ -357,7 +357,7 @@ handle_get_zones (XdpDbusInputCapture *object, InputCaptureSession *input_capture_session; g_autoptr(GError) error = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; Session *session; REQUEST_AUTOLOCK (request); @@ -425,7 +425,7 @@ handle_get_zones (XdpDbusInputCapture *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session, @@ -471,21 +471,22 @@ set_pointer_barriers_done (GObject *source_object, &results, res, &error)) - { + { g_dbus_error_strip_remote_error (error); g_warning ("A backend call failed: %s", error->message); + g_clear_error (&error); } should_close_session = !request->exported || response != 0; if (request->exported) { - if (response != 0) + if (!results) { GVariantBuilder results_builder; g_variant_builder_init (&results_builder, G_VARIANT_TYPE_VARDICT); - results = g_variant_builder_end (&results_builder); + results = g_variant_ref_sink (g_variant_builder_end (&results_builder)); } xdp_dbus_request_emit_response (XDP_DBUS_REQUEST (request), response, results); @@ -512,7 +513,7 @@ handle_set_pointer_barriers (XdpDbusInputCapture *object, InputCaptureSession *input_capture_session; g_autoptr(GError) error = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; Session *session; REQUEST_AUTOLOCK (request); @@ -580,7 +581,7 @@ handle_set_pointer_barriers (XdpDbusInputCapture *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session, diff --git a/src/open-uri.c b/src/open-uri.c index a58c1e32c..39c129e5d 100644 --- a/src/open-uri.c +++ b/src/open-uri.c @@ -641,12 +641,11 @@ handle_open_in_thread_func (GTask *task, if (uri) { - GError *error = NULL; + g_autoptr (GError) local_error = NULL; - if (!g_uri_is_valid (uri, G_URI_FLAGS_NONE, &error)) + if (!g_uri_is_valid (uri, G_URI_FLAGS_NONE, &local_error)) { - g_debug ("Rejecting open request for invalid uri '%s': %s", uri, error->message); - g_clear_error (&error); + g_debug ("Rejecting open request for invalid uri '%s': %s", uri, local_error->message); /* Reject the request */ if (request->exported) diff --git a/src/proxy-resolver.c b/src/proxy-resolver.c index c62992270..2a932f89a 100644 --- a/src/proxy-resolver.c +++ b/src/proxy-resolver.c @@ -72,11 +72,11 @@ proxy_resolver_handle_lookup (XdpDbusProxyResolver *object, else { g_auto (GStrv) proxies = NULL; - GError *error = NULL; + g_autoptr (GError) error = NULL; proxies = g_proxy_resolver_lookup (resolver->resolver, arg_uri, NULL, &error); - if (error) - g_dbus_method_invocation_take_error (invocation, error); + if (!proxies) + g_dbus_method_invocation_take_error (invocation, g_steal_pointer (&error)); else g_dbus_method_invocation_return_value (invocation, g_variant_new ("(^as)", proxies)); diff --git a/src/realtime.c b/src/realtime.c index fda60496e..997fc5304 100644 --- a/src/realtime.c +++ b/src/realtime.c @@ -245,9 +245,9 @@ load_all_properties (GDBusProxy *proxy) for (guint i = 0; i < G_N_ELEMENTS (properties); ++i) { - GVariant *result; + g_autoptr (GVariant) result = NULL; GVariant *parameters; - GError *error = NULL; + g_autoptr (GError) error = NULL; parameters = g_variant_new ("(ss)", "org.freedesktop.RealtimeKit1", properties[i]); result = g_dbus_proxy_call_sync (proxy, @@ -258,14 +258,13 @@ load_all_properties (GDBusProxy *proxy) NULL, &error); - if (error) + if (!result) { g_warning ("Failed to load RealtimeKit property: %s", error->message); - g_error_free (error); } else { - GVariant *value; + g_autoptr (GVariant) value = NULL; g_variant_get (result, "(v)", &value); if (i == MAX_REALTIME_PRIORITY) @@ -281,8 +280,6 @@ load_all_properties (GDBusProxy *proxy) g_assert_not_reached (); g_dbus_proxy_set_cached_property (proxy, properties[i], value); - g_variant_unref (value); - g_variant_unref (result); } } } diff --git a/src/remote-desktop.c b/src/remote-desktop.c index 8a33a8147..472453878 100644 --- a/src/remote-desktop.c +++ b/src/remote-desktop.c @@ -307,7 +307,7 @@ handle_create_session (XdpDbusRemoteDesktop *object, g_autoptr(XdpDbusImplRequest) impl_request = NULL; Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; REQUEST_AUTOLOCK (request); @@ -334,7 +334,7 @@ handle_create_session (XdpDbusRemoteDesktop *object, } g_variant_builder_init (&options_builder, G_VARIANT_TYPE_VARDICT); - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session, @@ -381,6 +381,7 @@ select_devices_done (GObject *source_object, { g_dbus_error_strip_remote_error (error); g_warning ("A backend call failed: %s", error->message); + g_clear_error (&error); } should_close_session = !request->exported || response != 0; @@ -511,7 +512,7 @@ handle_select_devices (XdpDbusRemoteDesktop *object, g_autoptr(GError) error = NULL; g_autoptr(XdpDbusImplRequest) impl_request = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; REQUEST_AUTOLOCK (request); @@ -563,7 +564,7 @@ handle_select_devices (XdpDbusRemoteDesktop *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); /* If 'restore_token' is passed, lookup the corresponding data in the * permission store and / or the GHashTable with transient permissions. @@ -644,7 +645,7 @@ start_done (GObject *source_object, RemoteDesktopSession *remote_desktop_session; guint response = 2; gboolean should_close_session; - GVariant *results = NULL; + g_autoptr(GVariant) results = NULL; g_autoptr(GError) error = NULL; REQUEST_AUTOLOCK (request); @@ -662,6 +663,7 @@ start_done (GObject *source_object, { g_dbus_error_strip_remote_error (error); g_warning ("A backend call failed: %s", error->message); + g_clear_error (&error); } should_close_session = !request->exported || response != 0; @@ -680,12 +682,13 @@ start_done (GObject *source_object, should_close_session = TRUE; } } - else + + if (!results) { GVariantBuilder results_builder; g_variant_builder_init (&results_builder, G_VARIANT_TYPE_VARDICT); - results = g_variant_builder_end (&results_builder); + results = g_variant_ref_sink (g_variant_builder_end (&results_builder)); } xdp_dbus_request_emit_response (XDP_DBUS_REQUEST (request), @@ -717,7 +720,7 @@ handle_start (XdpDbusRemoteDesktop *object, g_autoptr(GError) error = NULL; g_autoptr(XdpDbusImplRequest) impl_request = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; REQUEST_AUTOLOCK (request); @@ -771,7 +774,7 @@ handle_start (XdpDbusRemoteDesktop *object, request_export (request, g_dbus_method_invocation_get_connection (invocation)); g_variant_builder_init (&options_builder, G_VARIANT_TYPE_VARDICT); - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session, @@ -855,7 +858,7 @@ handle_notify_pointer_motion (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -888,7 +891,7 @@ handle_notify_pointer_motion (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_pointer_motion (impl, session->id, @@ -913,7 +916,7 @@ handle_notify_pointer_motion_absolute (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -956,7 +959,7 @@ handle_notify_pointer_motion_absolute (XdpDbusRemoteDesktop *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_pointer_motion_absolute (impl, session->id, @@ -981,7 +984,7 @@ handle_notify_pointer_button (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1015,7 +1018,7 @@ handle_notify_pointer_button (XdpDbusRemoteDesktop *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_pointer_button (impl, session->id, @@ -1044,7 +1047,7 @@ handle_notify_pointer_axis (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1078,7 +1081,7 @@ handle_notify_pointer_axis (XdpDbusRemoteDesktop *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_pointer_axis (impl, session->id, @@ -1102,7 +1105,7 @@ handle_notify_pointer_axis_discrete (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1135,7 +1138,7 @@ handle_notify_pointer_axis_discrete (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_pointer_axis_discrete (impl, session->id, @@ -1160,7 +1163,7 @@ handle_notify_keyboard_keycode (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1193,7 +1196,7 @@ handle_notify_keyboard_keycode (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_keyboard_keycode (impl, session->id, @@ -1218,7 +1221,7 @@ handle_notify_keyboard_keysym (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1251,7 +1254,7 @@ handle_notify_keyboard_keysym (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_keyboard_keysym (impl, session->id, @@ -1278,7 +1281,7 @@ handle_notify_touch_down (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1320,7 +1323,7 @@ handle_notify_touch_down (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_touch_down (impl, session->id, @@ -1348,7 +1351,7 @@ handle_notify_touch_motion (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1390,7 +1393,7 @@ handle_notify_touch_motion (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_touch_motion (impl, session->id, @@ -1415,7 +1418,7 @@ handle_notify_touch_up (XdpDbusRemoteDesktop *object, Call *call = call_from_invocation (invocation); Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; g_autoptr(GError) error = NULL; session = acquire_session_from_call (arg_session_handle, call); @@ -1448,7 +1451,7 @@ handle_notify_touch_up (XdpDbusRemoteDesktop *object, g_dbus_method_invocation_return_gerror (invocation, error); return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); xdp_dbus_impl_remote_desktop_call_notify_touch_up (impl, session->id, diff --git a/src/restore-token.c b/src/restore-token.c index cbe26c8de..d343f6c45 100644 --- a/src/restore-token.c +++ b/src/restore-token.c @@ -248,7 +248,7 @@ xdp_session_persistence_replace_restore_token_with_data (Session *session, g_clear_pointer (&value, g_variant_unref); } - *in_out_options = g_variant_builder_end (&options_builder); + *in_out_options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); } void @@ -374,5 +374,5 @@ xdp_session_persistence_replace_restore_data_with_token (Session *session, *in_out_persist_mode = PERSIST_MODE_NONE; } - *in_out_results = g_variant_builder_end (&results_builder); + *in_out_results = g_variant_ref_sink (g_variant_builder_end (&results_builder)); } diff --git a/src/screen-cast.c b/src/screen-cast.c index 21281cb81..65fb3bbbc 100644 --- a/src/screen-cast.c +++ b/src/screen-cast.c @@ -225,7 +225,7 @@ handle_create_session (XdpDbusScreenCast *object, g_autoptr(XdpDbusImplRequest) impl_request = NULL; Session *session; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; REQUEST_AUTOLOCK (request); @@ -252,7 +252,7 @@ handle_create_session (XdpDbusScreenCast *object, } g_variant_builder_init (&options_builder, G_VARIANT_TYPE_VARDICT); - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session, @@ -484,7 +484,7 @@ handle_select_sources (XdpDbusScreenCast *object, g_autoptr(GError) error = NULL; g_autoptr(XdpDbusImplRequest) impl_request = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; REQUEST_AUTOLOCK (request); @@ -578,7 +578,7 @@ handle_select_sources (XdpDbusScreenCast *object, return G_DBUS_METHOD_INVOCATION_HANDLED; } - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); /* If 'restore_token' is passed, lookup the corresponding data in the * permission store and / or the GHashTable with transient permissions. @@ -769,7 +769,7 @@ start_done (GObject *source_object, ScreenCastSession *screen_cast_session; guint response = 2; gboolean should_close_session; - GVariant *results = NULL; + g_autoptr(GVariant) results = NULL; g_autoptr(GError) error = NULL; REQUEST_AUTOLOCK (request); @@ -786,6 +786,7 @@ start_done (GObject *source_object, { g_dbus_error_strip_remote_error (error); g_warning ("A backend call failed: %s", error->message); + g_clear_error (&error); } should_close_session = !request->exported || response != 0; @@ -811,7 +812,7 @@ start_done (GObject *source_object, GVariantBuilder results_builder; g_variant_builder_init (&results_builder, G_VARIANT_TYPE_VARDICT); - results = g_variant_builder_end (&results_builder); + results = g_variant_ref_sink (g_variant_builder_end (&results_builder)); } xdp_dbus_request_emit_response (XDP_DBUS_REQUEST (request), response, results); @@ -844,7 +845,7 @@ handle_start (XdpDbusScreenCast *object, g_autoptr(GError) error = NULL; g_autoptr(XdpDbusImplRequest) impl_request = NULL; GVariantBuilder options_builder; - GVariant *options; + g_autoptr(GVariant) options = NULL; REQUEST_AUTOLOCK (request); @@ -906,7 +907,7 @@ handle_start (XdpDbusScreenCast *object, request_export (request, g_dbus_method_invocation_get_connection (invocation)); g_variant_builder_init (&options_builder, G_VARIANT_TYPE_VARDICT); - options = g_variant_builder_end (&options_builder); + options = g_variant_ref_sink (g_variant_builder_end (&options_builder)); g_object_set_qdata_full (G_OBJECT (request), quark_request_session,