1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Ensure that file-handle winShmNode.hFile.h is used in a thread-safe manner.

FossilOrigin-Name: 7a32b497ab16774021924a8536e1025a0a01740a6484f0de17623a69713511d8
This commit is contained in:
dan
2024-11-25 18:47:12 +00:00
parent 1743c5f836
commit f6d267491c
3 changed files with 12 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
C Fixes\sfor\scode\son\sthis\sbranch.\sNow\sappears\sto\swork,\sbut\sis\snot\stested\swell. C Ensure\sthat\sfile-handle\swinShmNode.hFile.h\sis\sused\sin\sa\sthread-safe\smanner.
D 2024-11-25T16:54:10.680 D 2024-11-25T18:47:12.655
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -759,7 +759,7 @@ F src/os_common.h 6c0eb8dd40ef3e12fe585a13e709710267a258e2c8dd1c40b1948a1d14582e
F src/os_kv.c 4d39e1f1c180b11162c6dc4aa8ad34053873a639bac6baae23272fc03349986a F src/os_kv.c 4d39e1f1c180b11162c6dc4aa8ad34053873a639bac6baae23272fc03349986a
F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d872107 F src/os_setup.h 6011ad7af5db4e05155f385eb3a9b4470688de6f65d6166b8956e58a3d872107
F src/os_unix.c d4a33e8fbd1c6eb722a21b6ce1eee1213ec856170a2f256d99f3d2978f054f5a F src/os_unix.c d4a33e8fbd1c6eb722a21b6ce1eee1213ec856170a2f256d99f3d2978f054f5a
F src/os_win.c 89ba97de6b7b022a4955cc63cc75535ed8d792be8e68455c753996ebef7ec9ba F src/os_win.c cb99f2aa71667d0e2a8ec3dc581e6d87e98d69e5f129a5a55682b8676c3335f5
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
F src/pager.c 9656ad4e8331efb8a4f94f7a0c6440b98caea073950a367ea0c728a53b8e62c9 F src/pager.c 9656ad4e8331efb8a4f94f7a0c6440b98caea073950a367ea0c728a53b8e62c9
F src/pager.h 4b1140d691860de0be1347474c51fee07d5420bd7f802d38cbab8ea4ab9f538a F src/pager.h 4b1140d691860de0be1347474c51fee07d5420bd7f802d38cbab8ea4ab9f538a
@@ -2199,8 +2199,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 737ca8a9fb9dc74b28f2186d93c5101463497445d0fabba3def61fee29abf2c8 P 0568fc6dde41dd29e85e697cd1865feb4db6aaae09d5e5100b3f97cab93590eb
R 67627b8a16f9542753e5ce4ea1a59b13 R 29dcaec0b27ea041629c89021b3c05a9
U dan U dan
Z aaacd08c676a64c2d5781697fad0f96f Z eadef2d7e6fcb938f86bea8ab56027fe
# Remove this line to create a well-formed Fossil manifest. # Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
0568fc6dde41dd29e85e697cd1865feb4db6aaae09d5e5100b3f97cab93590eb 7a32b497ab16774021924a8536e1025a0a01740a6484f0de17623a69713511d8

View File

@@ -2579,7 +2579,9 @@ static int winLockFileTimeout(
ret = winLockFile(&hFile, flags, offset, 0, nByte, 0); ret = winLockFile(&hFile, flags, offset, 0, nByte, 0);
#else #else
if( !osIsNT() ){ if( !osIsNT() ){
sqlite3_mutex_enter(pMutex);
ret = winLockFile(&hFile, flags, offset, 0, nByte, 0); ret = winLockFile(&hFile, flags, offset, 0, nByte, 0);
sqlite3_mutex_leave(pMutex);
}else{ }else{
OVERLAPPED ovlp; OVERLAPPED ovlp;
memset(&ovlp, 0, sizeof(OVERLAPPED)); memset(&ovlp, 0, sizeof(OVERLAPPED));
@@ -2593,7 +2595,10 @@ static int winLockFileTimeout(
flags &= ~LOCKFILE_FAIL_IMMEDIATELY; flags &= ~LOCKFILE_FAIL_IMMEDIATELY;
} }
sqlite3_mutex_enter(pMutex);
ret = osLockFileEx(hFile, flags, 0, nByte, 0, &ovlp); ret = osLockFileEx(hFile, flags, 0, nByte, 0, &ovlp);
sqlite3_mutex_leave(pMutex);
if( !ret && nMs>0 && GetLastError()==ERROR_IO_PENDING ){ if( !ret && nMs>0 && GetLastError()==ERROR_IO_PENDING ){
DWORD res = WaitForSingleObject(ovlp.hEvent, (DWORD)nMs); DWORD res = WaitForSingleObject(ovlp.hEvent, (DWORD)nMs);
if( res==WAIT_OBJECT_0 ){ if( res==WAIT_OBJECT_0 ){