summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2012-06-25 12:20:45 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2012-06-25 15:22:38 +0100
commite29efffd88881eb765ded94e9ebdbb5a76d2fd5f (patch)
tree9cd2d00272b210524eedaa0c1e5e345839c1371b
parenta12e6f3ccf30d97fe5fcbd4ecd4dba6e1c550123 (diff)
dbus_pending_call_set_notify: don't leave the connection locked on OOM
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=51032 Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk> Reviewed-by: Lennart Poettering <lennart@poettering.net>
-rw-r--r--dbus/dbus-pending-call.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/dbus/dbus-pending-call.c b/dbus/dbus-pending-call.c
index 8a9d2f49..62c6c748 100644
--- a/dbus/dbus-pending-call.c
+++ b/dbus/dbus-pending-call.c
@@ -631,6 +631,8 @@ dbus_pending_call_set_notify (DBusPendingCall *pending,
void *user_data,
DBusFreeFunction free_user_data)
{
+ dbus_bool_t ret = FALSE;
+
_dbus_return_val_if_fail (pending != NULL, FALSE);
CONNECTION_LOCK (pending->connection);
@@ -638,13 +640,15 @@ dbus_pending_call_set_notify (DBusPendingCall *pending,
/* could invoke application code! */
if (!_dbus_pending_call_set_data_unlocked (pending, notify_user_data_slot,
user_data, free_user_data))
- return FALSE;
+ goto out;
pending->function = function;
+ ret = TRUE;
+out:
CONNECTION_UNLOCK (pending->connection);
- return TRUE;
+ return ret;
}
/**