]> git.saurik.com Git - apple/objc4.git/blobdiff - runtime/objc-runtime-new.mm
objc4-493.11.tar.gz
[apple/objc4.git] / runtime / objc-runtime-new.mm
index 296df91aef36ef38afebc3c5db69612f8603a751..abf133c82d552383de9c786da48cbf9a75b1f1a1 100644 (file)
@@ -122,6 +122,14 @@ PRIVATE_EXTERN int startDebuggerMode(void)
         return DEBUGGER_OFF;
     }
 
         return DEBUGGER_OFF;
     }
 
+    // side table locks are not optional
+    if (!noSideTableLocksHeld()) {
+        rwlock_unlock(&runtimeLock, debugger_runtimeLock);
+        mutex_unlock(&cacheUpdateLock);
+        debugger_runtimeLock = 0;
+        return DEBUGGER_OFF;
+    }
+    
     // selLock is optional
     if (rwlock_try_write(&selLock)) {
         debugger_selLock = RDWR;
     // selLock is optional
     if (rwlock_try_write(&selLock)) {
         debugger_selLock = RDWR;
@@ -188,7 +196,7 @@ PRIVATE_EXTERN BOOL isManagedDuringDebugger(void *lock)
 * Locking a managed mutex during debugger mode causes a trap unless 
 *   this returns YES.
 **********************************************************************/
 * Locking a managed mutex during debugger mode causes a trap unless 
 *   this returns YES.
 **********************************************************************/
-PRIVATE_EXTERN BOOL isLockedDuringDebugger(mutex_t *lock)
+PRIVATE_EXTERN BOOL isLockedDuringDebugger(void *lock)
 {
     assert(DebuggerMode);
 
 {
     assert(DebuggerMode);