eina threadqueue - for paranoia lock+ulock+free in order locks taken
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 6 Aug 2016 00:51:10 +0000 (09:51 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 6 Aug 2016 00:56:02 +0000 (09:56 +0900)
so mimic order of locks taken to be paranoid ... this wouldnt be a
deadlock issue but just to be safe instead of sorry.

src/lib/eina/eina_thread_queue.c

index d5bee95..c76a5cb 100644 (file)
@@ -137,14 +137,14 @@ _eina_thread_queue_msg_block_new(int size)
 static void
 _eina_thread_queue_msg_block_real_free(Eina_Thread_Queue_Msg_Block *blk)
 {
-   eina_lock_take(&(blk->lock_non_0_ref));
-   eina_lock_release(&(blk->lock_non_0_ref));
-   eina_lock_free(&(blk->lock_non_0_ref));
 #ifndef ATOMIC
    eina_lock_take(&(blk->lock_ref));
    eina_lock_release(&(blk->lock_ref));
    eina_spinlock_free(&(blk->lock_ref));
 #endif
+   eina_lock_take(&(blk->lock_non_0_ref));
+   eina_lock_release(&(blk->lock_non_0_ref));
+   eina_lock_free(&(blk->lock_non_0_ref));
    free(blk);
 }