From: Michael Vrable Date: Tue, 26 Jan 2010 22:58:06 +0000 (-0800) Subject: Ensure a reference to an async is held while it is locked. X-Git-Url: https://git.vrable.net/?a=commitdiff_plain;h=e28023d2e5189f8902fa8590a3100f185c947f61;p=bluesky.git Ensure a reference to an async is held while it is locked. Fixes a crash (assertion failure) with barriers where the barrier was deallocated while it was still locked. --- diff --git a/bluesky/store.c b/bluesky/store.c index 7a63b04..0d542ad 100644 --- a/bluesky/store.c +++ b/bluesky/store.c @@ -215,6 +215,7 @@ static void op_complete(gpointer a, gpointer b) { BlueSkyStoreAsync *barrier = (BlueSkyStoreAsync *)b; + bluesky_store_async_ref(barrier); g_mutex_lock(barrier->lock); barrier->store_private = GINT_TO_POINTER(GPOINTER_TO_INT(barrier->store_private) - 1); @@ -223,6 +224,7 @@ static void op_complete(gpointer a, gpointer b) bluesky_store_async_mark_complete(barrier); } g_mutex_unlock(barrier->lock); + bluesky_store_async_unref(barrier); } /* Add the given operation to the barrier. The barrier will not complete until