WorkerThreadPool: Fix wrong pointer used in the case of BinaryMutex

This commit is contained in:
Pedro J. Estébanez 2024-06-28 19:46:55 +02:00
parent 811ce36c60
commit f2f9a6b8a1

View file

@ -427,7 +427,7 @@ void WorkerThreadPool::_lock_unlockable_mutexes() {
if ((((uintptr_t)unlockable_mutexes[i]) & 1) == 0) { if ((((uintptr_t)unlockable_mutexes[i]) & 1) == 0) {
((Mutex *)unlockable_mutexes[i])->lock(); ((Mutex *)unlockable_mutexes[i])->lock();
} else { } else {
((BinaryMutex *)unlockable_mutexes[i])->lock(); ((BinaryMutex *)(unlockable_mutexes[i] & ~1))->lock();
} }
} }
} }
@ -441,7 +441,7 @@ void WorkerThreadPool::_unlock_unlockable_mutexes() {
if ((((uintptr_t)unlockable_mutexes[i]) & 1) == 0) { if ((((uintptr_t)unlockable_mutexes[i]) & 1) == 0) {
((Mutex *)unlockable_mutexes[i])->unlock(); ((Mutex *)unlockable_mutexes[i])->unlock();
} else { } else {
((BinaryMutex *)unlockable_mutexes[i])->unlock(); ((BinaryMutex *)(unlockable_mutexes[i] & ~1))->unlock();
} }
} }
} }