From 77ebe7044350705648b082812d3580735127430a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 24 Jun 2007 16:11:52 +0000 Subject: [PATCH] Make sure the returned pa_msgobject object has a valid refcnt before returning it git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1495 fefdeb5f-60dc-0310-8127-8f9354f1896f --- src/pulsecore/asyncmsgq.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c index d650989..26714a0 100644 --- a/src/pulsecore/asyncmsgq.c +++ b/src/pulsecore/asyncmsgq.c @@ -153,18 +153,24 @@ int pa_asyncmsgq_get(pa_asyncmsgq *a, pa_msgobject **object, int *code, void **u pa_assert(code); pa_assert(!a->current); - if (!(a->current = pa_asyncq_pop(a->asyncq, wait))) + if (!(a->current = pa_asyncq_pop(a->asyncq, wait))) { +/* pa_log("failure"); */ return -1; + } + +/* pa_log("success"); */ *code = a->current->code; if (userdata) *userdata = a->current->userdata; - if (object) - *object = a->current->object; + if (object) { + if ((*object = a->current->object)) + pa_msgobject_assert_ref(*object); + } if (chunk) *chunk = a->current->memchunk; - pa_log_debug("q=%p object=%p (%s) code=%i data=%p chunk.length=%u", (void*) a, (void*) a->current->object, a->current->object ? a->current->object->parent.type_name : NULL, a->current->code, (void*) a->current->userdata, a->current->memchunk.length); + pa_log_debug("Get q=%p object=%p (%s) code=%i data=%p chunk.length=%u", (void*) a, (void*) a->current->object, a->current->object ? a->current->object->parent.type_name : NULL, a->current->code, (void*) a->current->userdata, a->current->memchunk.length); return 0; } -- 2.7.4