diff options
Diffstat (limited to 'src/os_win.c')
-rw-r--r-- | src/os_win.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/os_win.c b/src/os_win.c index be13d8348..e7ed66858 100644 --- a/src/os_win.c +++ b/src/os_win.c @@ -2579,7 +2579,9 @@ static int winLockFileTimeout( ret = winLockFile(&hFile, flags, offset, 0, nByte, 0); #else if( !osIsNT() ){ + sqlite3_mutex_enter(pMutex); ret = winLockFile(&hFile, flags, offset, 0, nByte, 0); + sqlite3_mutex_leave(pMutex); }else{ OVERLAPPED ovlp; memset(&ovlp, 0, sizeof(OVERLAPPED)); @@ -2593,7 +2595,10 @@ static int winLockFileTimeout( flags &= ~LOCKFILE_FAIL_IMMEDIATELY; } + sqlite3_mutex_enter(pMutex); ret = osLockFileEx(hFile, flags, 0, nByte, 0, &ovlp); + sqlite3_mutex_leave(pMutex); + if( !ret && nMs>0 && GetLastError()==ERROR_IO_PENDING ){ DWORD res = WaitForSingleObject(ovlp.hEvent, (DWORD)nMs); if( res==WAIT_OBJECT_0 ){ |