From e28023d2e5189f8902fa8590a3100f185c947f61 Mon Sep 17 00:00:00 2001 From: Michael Vrable Date: Tue, 26 Jan 2010 14:58:06 -0800 Subject: [PATCH] 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. --- bluesky/store.c | 2 ++ 1 file changed, 2 insertions(+) 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 -- 2.20.1