Merge pull request #7479 from sethalves/fix-logging-crash

fix locking in GenericQueueThread::process
This commit is contained in:
Brad Hefta-Gaub 2016-03-25 17:56:10 -07:00
commit bb42d84bbd

View file

@ -45,18 +45,23 @@ protected:
} }
virtual bool process() { virtual bool process() {
lock();
if (!_items.size()) { if (!_items.size()) {
unlock();
_hasItemsMutex.lock(); _hasItemsMutex.lock();
_hasItems.wait(&_hasItemsMutex, getMaxWait()); _hasItems.wait(&_hasItemsMutex, getMaxWait());
_hasItemsMutex.unlock(); _hasItemsMutex.unlock();
} else {
unlock();
} }
lock();
if (!_items.size()) { if (!_items.size()) {
unlock();
return isStillRunning(); return isStillRunning();
} }
Queue processItems; Queue processItems;
lock();
processItems.swap(_items); processItems.swap(_items);
unlock(); unlock();
return processQueueItems(processItems); return processQueueItems(processItems);