https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/commit/7c440350b17a6007d2054db741340993b6e9aac7 From 7c440350b17a6007d2054db741340993b6e9aac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 27 May 2024 10:56:00 +0200 Subject: [PATCH] screencast: Fix valgrind warning Fixes the following warning when cancelling a screen cast dialog. ==343654== Invalid read of size 8 ==343654== at 0x48486A: screen_cast_dialog_handle_free (screencast.c:103) ==343654== by 0x4848F9: screen_cast_dialog_handle_close (screencast.c:113) ==343654== by 0x48640D: screen_cast_session_close (screencast.c:916) ==343654== by 0x489BE6: session_close (session.c:87) ==343654== by 0x489C7B: handle_close (session.c:117) ==343654== by 0x410696: _g_dbus_codegen_marshal_BOOLEAN__OBJECT (xdg-desktop-portal-dbus.c:444) ==343654== by 0x436254: xdp_impl_session_method_marshal_close (xdg-desktop-portal-dbus.c:28756) ==343654== by 0x4CF9567: g_closure_invoke (gclosure.c:833) ==343654== by 0x4D0C5FB: signal_emit_unlocked_R.isra.0 (gsignal.c:3928) ==343654== by 0x4D1311A: signal_emitv_unlocked (gsignal.c:3212) ==343654== by 0x4D1311A: g_signal_emitv (gsignal.c:3112) ==343654== by 0x43772F: _xdp_impl_session_skeleton_handle_method_call (xdg-desktop-portal-dbus.c:29485) ==343654== by 0x4C24D21: g_dbus_interface_method_dispatch_helper (gdbusinterfaceskeleton.c:618) ==343654== Address 0x1c5acb10 is 16 bytes inside a block of size 40 free'd ==343654== at 0x4845B2C: free (vg_replace_malloc.c:985) ==343654== by 0x4848DE: screen_cast_dialog_handle_free (screencast.c:107) ==343654== by 0x4848F9: screen_cast_dialog_handle_close (screencast.c:113) ==343654== by 0x484C9C: on_request_handle_close_cb (screencast.c:216) ==343654== by 0x410696: _g_dbus_codegen_marshal_BOOLEAN__OBJECT (xdg-desktop-portal-dbus.c:444) ==343654== by 0x42EE5A: xdp_impl_request_method_marshal_close (xdg-desktop-portal-dbus.c:24008) ==343654== by 0x4CF9567: g_closure_invoke (gclosure.c:833) ==343654== by 0x4D0BFC8: signal_emit_unlocked_R.isra.0 (gsignal.c:3888) ==343654== by 0x4D1311A: signal_emitv_unlocked (gsignal.c:3212) ==343654== by 0x4D1311A: g_signal_emitv (gsignal.c:3112) ==343654== by 0x42FE83: _xdp_impl_request_skeleton_handle_method_call (xdg-desktop-portal-dbus.c:24590) ==343654== by 0x4C24D21: g_dbus_interface_method_dispatch_helper (gdbusinterfaceskeleton.c:618) ==343654== by 0x4C0A837: call_in_idle_cb (gdbusconnection.c:5013) (cherry picked from commit 9a4dffaf775f6bdb372768f568167fa2c1187257) --- src/screencast.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/screencast.c b/src/screencast.c index 33d1af3..4bc993f 100644 --- a/src/screencast.c +++ b/src/screencast.c @@ -211,9 +211,12 @@ on_request_handle_close_cb (XdpImplRequest *object, GDBusMethodInvocation *invocation, ScreenCastDialogHandle *dialog_handle) { - cancel_start_session (dialog_handle->session, 2); + ScreenCastSession *screen_cast_session = dialog_handle->session; - screen_cast_dialog_handle_close (dialog_handle); + cancel_start_session (screen_cast_session, 2); + + g_clear_pointer (&screen_cast_session->dialog_handle, + screen_cast_dialog_handle_close); return FALSE; } -- GitLab