From 90af20d9505a11d02e81a4f8fa09ee15faba96b8 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Wed, 22 Feb 2023 02:46:55 +0000 Subject: [PATCH] gdbusconnection: Improve docs of message ownership in closures This introduces no functional changes, but makes it a little clearer how the ownership of these `GDBusMessage` instances works. The free function is changed to `g_clear_object()` to avoid the possibility of somehow using the messages after freeing them. Basically just some drive-by docs improvements while trying to debug issue #1264. Signed-off-by: Philip Withnall Helps: #1264 --- gio/gdbusconnection.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c index 6a0d67a8e..0cbfc66c1 100644 --- a/gio/gdbusconnection.c +++ b/gio/gdbusconnection.c @@ -3743,7 +3743,7 @@ g_dbus_connection_signal_unsubscribe (GDBusConnection *connection, typedef struct { SignalSubscriber *subscriber; /* (owned) */ - GDBusMessage *message; + GDBusMessage *message; /* (owned) */ GDBusConnection *connection; const gchar *sender; /* (nullable) for peer-to-peer connections */ const gchar *path; @@ -3807,7 +3807,7 @@ emit_signal_instance_in_idle_cb (gpointer data) static void signal_instance_free (SignalInstance *signal_instance) { - g_object_unref (signal_instance->message); + g_clear_object (&signal_instance->message); g_object_unref (signal_instance->connection); signal_subscriber_unref (signal_instance->subscriber); g_free (signal_instance); @@ -4219,7 +4219,7 @@ has_object_been_unregistered (GDBusConnection *connection, typedef struct { GDBusConnection *connection; - GDBusMessage *message; + GDBusMessage *message; /* (owned) */ gpointer user_data; const gchar *property_name; const GDBusInterfaceVTable *vtable; @@ -4233,7 +4233,7 @@ static void property_data_free (PropertyData *data) { g_object_unref (data->connection); - g_object_unref (data->message); + g_clear_object (&data->message); g_free (data); } @@ -4575,7 +4575,7 @@ handle_getset_property (GDBusConnection *connection, typedef struct { GDBusConnection *connection; - GDBusMessage *message; + GDBusMessage *message; /* (owned) */ gpointer user_data; const GDBusInterfaceVTable *vtable; GDBusInterfaceInfo *interface_info; @@ -4587,7 +4587,7 @@ static void property_get_all_data_free (PropertyGetAllData *data) { g_object_unref (data->connection); - g_object_unref (data->message); + g_clear_object (&data->message); g_free (data); } @@ -6815,7 +6815,7 @@ typedef struct static void subtree_deferred_data_free (SubtreeDeferredData *data) { - g_object_unref (data->message); + g_clear_object (&data->message); exported_subtree_unref (data->es); g_free (data); }