]> git.sesse.net Git - casparcg/commitdiff
[semaphore] Fixed serious bug in callback based acquire where the callback was not...
authorHelge Norberg <helge.norberg@svt.se>
Thu, 23 Feb 2017 12:45:00 +0000 (13:45 +0100)
committerHelge Norberg <helge.norberg@svt.se>
Thu, 23 Feb 2017 12:45:00 +0000 (13:45 +0100)
common/semaphore.h

index 7baccda0e52df188f8e782e135406b8166a8488d..19ec73ad74398522f819314f838007ce6c951230 100644 (file)
@@ -143,7 +143,14 @@ public:
        {
                boost::unique_lock<boost::mutex> lock(mutex_);
 
-               callbacks_per_requested_permits_[permits].push(std::move(acquired_callback));
+               if (permits_ >= permits)
+               {
+                       permits_ -= permits;
+                       lock.unlock();
+                       acquired_callback();
+               }
+               else
+                       callbacks_per_requested_permits_[permits].push(std::move(acquired_callback));
        }
 
        /**