[beast: 2/6] BSE: _engine_pop_unprocessed_node: avoid race condition for node lock



commit e910d80e79b9677dffaa4864c3d2c67379d2622d
Author: Tim Janik <timj gnu org>
Date:   Sun Nov 6 17:47:03 2016 +0100

    BSE: _engine_pop_unprocessed_node: avoid race condition for node lock
    
    Signed-off-by: Tim Janik <timj gnu org>

 bse/bseengineutils.cc |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/bse/bseengineutils.cc b/bse/bseengineutils.cc
index f4d6c02..ec70f1f 100644
--- a/bse/bseengineutils.cc
+++ b/bse/bseengineutils.cc
@@ -475,10 +475,11 @@ _engine_pop_unprocessed_node (void)
   pqueue_mutex.lock();
   node = pqueue_schedule ? _engine_schedule_pop_node (pqueue_schedule) : NULL;
   if (node)
-    pqueue_n_nodes += 1;
+    {
+      pqueue_n_nodes += 1;
+      ENGINE_NODE_LOCK (node);
+    }
   pqueue_mutex.unlock();
-  if (node)
-    ENGINE_NODE_LOCK (node);
   return node;
 }
 static inline void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]