diff --git a/src/servers/app/MultiLocker.cpp b/src/servers/app/MultiLocker.cpp index 052f3e14da..b5d0ab671d 100644 --- a/src/servers/app/MultiLocker.cpp +++ b/src/servers/app/MultiLocker.cpp @@ -445,10 +445,8 @@ MultiLocker::WriteLock() locked = true; } else { // new writer acquiring the lock -#if DEBUG if (IsReadLocked()) debugger("Reader wants to become writer!"); -#endif status_t status; do { @@ -501,12 +499,11 @@ MultiLocker::WriteUnlock() fWriterNest--; unlocked = true; } else { - unlocked = release_sem_etc(fLock, LARGE_NUMBER, B_DO_NOT_RESCHEDULE) == B_OK; - if (unlocked) { - // clear the information - fWriterThread = -1; - fWriterStackBase = 0; - } + // clear the information while still holding the lock + fWriterThread = -1; + fWriterStackBase = 0; + unlocked = release_sem_etc(fLock, LARGE_NUMBER, + B_DO_NOT_RESCHEDULE) == B_OK; } } else { char message[256];