diff --git a/src/xpdev/rwlockwrap.c b/src/xpdev/rwlockwrap.c
index 465c1ad1b4a09053bc832fa9919c031143d1e5a4..88699eadd8814594e2c9a2fc4aa8d767e049c5d2 100644
--- a/src/xpdev/rwlockwrap.c
+++ b/src/xpdev/rwlockwrap.c
@@ -146,7 +146,8 @@ rwlock_wrlock(rwlock_t *lock)
 		ret = true;
 	}
 	LeaveCriticalSection(&lock->lk);
-	LeaveCriticalSection(&lock->wlk);
+	if (!ret)
+		LeaveCriticalSection(&lock->wlk);
 	return ret;
 }