diff options
Diffstat (limited to 'src/pager.c')
-rw-r--r-- | src/pager.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/pager.c b/src/pager.c index 063b793f7..44384de5c 100644 --- a/src/pager.c +++ b/src/pager.c @@ -7473,13 +7473,15 @@ int sqlite3PagerWalSupported(Pager *pPager){ */ static int pagerExclusiveLock(Pager *pPager){ int rc; /* Return code */ + u8 eOrigLock; /* Original lock */ - assert( pPager->eLock==SHARED_LOCK || pPager->eLock==EXCLUSIVE_LOCK ); + assert( pPager->eLock>=SHARED_LOCK ); + eOrigLock = pPager->eLock; rc = pagerLockDb(pPager, EXCLUSIVE_LOCK); if( rc!=SQLITE_OK ){ /* If the attempt to grab the exclusive lock failed, release the ** pending lock that may have been obtained instead. */ - pagerUnlockDb(pPager, SHARED_LOCK); + pagerUnlockDb(pPager, eOrigLock); } return rc; |