diff --git a/src/xpdev/rwlockwrap.c b/src/xpdev/rwlockwrap.c
index cbeca40c4fc03d7ad642282792c92084caed312e..cc90610d0fd34070446d1c5e65947b346bc98c74 100644
--- a/src/xpdev/rwlockwrap.c
+++ b/src/xpdev/rwlockwrap.c
@@ -117,8 +117,11 @@ rwlock_unlock(rwlock_t *lock)
 		LeaveCriticalSection(&lock->lk);
 		return false;
 	}
-	lock->readers--;
-	return true;
+	if (lock->readers) {
+		lock->readers--;
+		return true;
+	}
+	return false;
 }
 
 #elif defined(__unix__)