]> git.saurik.com Git - apple/objc4.git/blobdiff - runtime/objc-lockdebug.mm
objc4-818.2.tar.gz
[apple/objc4.git] / runtime / objc-lockdebug.mm
index f182a27b260ff428531e6005667d1c7b242649f7..1429c2dbbbf555774fcb727bbd61f2184e46b64b 100644 (file)
@@ -321,10 +321,18 @@ lockdebug_assert_all_locks_locked()
 
 void
 lockdebug_assert_no_locks_locked()
+{
+    lockdebug_assert_no_locks_locked_except({});
+}
+
+void lockdebug_assert_no_locks_locked_except(std::initializer_list<void *> canBeLocked)
 {
     auto& owned = ownedLocks();
 
     for (const auto& l : AllLocks()) {
+        if (std::find(canBeLocked.begin(), canBeLocked.end(), l.first) != canBeLocked.end())
+            continue;
+
         if (hasLock(owned, l.first, l.second.k)) {
             _objc_fatal("lock %p:%d is incorrectly owned", l.first, l.second.k);
         }