diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c index a814809e57..4dc050d05a 100644 --- a/src/backend/storage/lmgr/lwlock.c +++ b/src/backend/storage/lmgr/lwlock.c @@ -1781,15 +1781,14 @@ LWLockRelease(LWLock *lock) * be the latest-acquired lock; so search array backwards. */ for (i = num_held_lwlocks; --i >= 0;) - { if (lock == held_lwlocks[i].lock) - { - mode = held_lwlocks[i].mode; break; - } - } + if (i < 0) elog(ERROR, "lock %s %d is not held", T_NAME(lock), T_ID(lock)); + + mode = held_lwlocks[i].mode; + num_held_lwlocks--; for (; i < num_held_lwlocks; i++) held_lwlocks[i] = held_lwlocks[i + 1];