diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-06-25 12:20:45 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-06-25 15:22:38 +0100 |
commit | e29efffd88881eb765ded94e9ebdbb5a76d2fd5f (patch) | |
tree | 9cd2d00272b210524eedaa0c1e5e345839c1371b | |
parent | a12e6f3ccf30d97fe5fcbd4ecd4dba6e1c550123 (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.c | 8 |
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; } /** |