@@ -129,19 +129,19 @@ } int objc_sync_enter(id obj) { - size_t i; + int i; if (obj == nil) return 0; if (!mutex_lock(&mutex)) return 1; - for (i = 0; i < num_locks; i++) { + for (i = num_locks - 1; i >= 0; i--) { if (locks[i].obj == obj) { if (thread_is_current(locks[i].thread)) locks[i].recursion++; else { /* Make sure objc_sync_exit doesn't free it */ @@ -213,19 +213,19 @@ } int objc_sync_exit(id obj) { - size_t i; + int i; if (obj == nil) return 0; if (!mutex_lock(&mutex)) return 1; - for (i = 0; i < num_locks; i++) { + for (i = num_locks - 1; i >= 0; i--) { if (locks[i].obj == obj) { if (locks[i].recursion > 0 && thread_is_current(locks[i].thread)) { locks[i].recursion--;