]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Simpler fix for the race condition also fixed by [7c102c7b5f]
authordan <dan@noemail.net>
Wed, 9 Jun 2010 11:28:43 +0000 (11:28 +0000)
committerdan <dan@noemail.net>
Wed, 9 Jun 2010 11:28:43 +0000 (11:28 +0000)
FossilOrigin-Name: 3c2de820034e01c2e939bd90a05a58159f60df50

manifest
manifest.uuid
src/wal.c

index 091d742f9836468fd9f6d1eab159958b56ea17c7..ca62da1acd1e9e542f8bda0611de2b18bd63a94b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Close\sdatabase\sopened\sby\stester.tcl\swhen\sit\sis\ssourced\sin\sall.test.\sBecause\stest\sscripts\sare\snow\srun\sin\sslave\sinterpreters,\sthis\sconnection\swas\snot\sbeing\sclosed\sby\sthe\sfirst\sscript\srun\sas\sit\swas\spreviously.
-D 2010-06-08T15:50:53
+C Simpler\sfix\sfor\sthe\srace\scondition\salso\sfixed\sby\s[7c102c7b5f]
+D 2010-06-09T11:28:44
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -224,7 +224,7 @@ F src/vdbeblob.c 5327132a42a91e8b7acfb60b9d2c3b1c5c863e0e
 F src/vdbemem.c 2a82f455f6ca6f78b59fb312f96054c04ae0ead1
 F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
 F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
-F src/wal.c d1a6aa3f29c7f4e7ab474264978b7c1030363cb9
+F src/wal.c 70edade3677e36afbe8075d4304cca767848ef6c
 F src/wal.h 4ace25262452d17e7d3ec970c89ee17794004008
 F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
 F src/where.c 75fee9e255b62f773fcadd1d1f25b6f63ac7a356
@@ -817,7 +817,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P ac4cc2574bafce30390a34f13228380d017791cb
-R 94165a325d56a3c31771d4ff81526ca5
+P b072e9f69ad5ec68b8ec4c716556070001f885e0
+R 9421e982987c37bd229515e5e78a5b85
 U dan
-Z a59bf38e2fc5dc877bae11df4e05677a
+Z 5d192ec04bfd1c32160d5fae6852d7c2
index 09e1aa4a36dce0c05b2f2c35d55dd223a75f5cd6..da39512fc5f08a08af75fff5496b1c72fd1ca0f0 100644 (file)
@@ -1 +1 @@
-b072e9f69ad5ec68b8ec4c716556070001f885e0
\ No newline at end of file
+3c2de820034e01c2e939bd90a05a58159f60df50
\ No newline at end of file
index 22a0688ae608613664571dcb750b01d7f29a3bc7..1a457f23ac46024540fa6f61abdb480c624eee1e 100644 (file)
--- a/src/wal.c
+++ b/src/wal.c
@@ -1780,7 +1780,7 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
   mxI = 0;
   for(i=1; i<WAL_NREADER; i++){
     u32 thisMark = pInfo->aReadMark[i];
-    if( mxReadMark<thisMark ){
+    if( mxReadMark<thisMark && thisMark<=(pWal->hdr.mxFrame+1) ){
       mxReadMark = thisMark;
       mxI = i;
     }
@@ -1845,6 +1845,7 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
       walUnlockShared(pWal, WAL_READ_LOCK(mxI));
       return WAL_RETRY;
     }else{
+      assert( mxReadMark<=(pWal->hdr.mxFrame+1) );
       pWal->readLock = mxI;
     }
   }