소스 검색

Merge pull request #93709 from RandomShaper/fix_antilock_bad_mutex

WorkerThreadPool: Fix wrong pointer used in the case of BinaryMutex
Rémi Verschelde 1 년 전
부모
커밋
d6385d7509
1개의 변경된 파일2개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 2
      core/object/worker_thread_pool.cpp

+ 2 - 2
core/object/worker_thread_pool.cpp

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