]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Bug fix in the sqliteOsLock() and sqliteOsUnlock() routines of POSIX.
authordrh <drh@noemail.net>
Thu, 6 Dec 2001 13:24:14 +0000 (13:24 +0000)
committerdrh <drh@noemail.net>
Thu, 6 Dec 2001 13:24:14 +0000 (13:24 +0000)
Version 2.1.5. (CVS 325)

FossilOrigin-Name: 669454060867593290c1ce8c45bd87d011976289

VERSION
manifest
manifest.uuid
src/os.c
www/changes.tcl

diff --git a/VERSION b/VERSION
index 7d2ed7c702057c90027b0e18808d3ea3c60d35c6..cd57a8b95d6d1de42ed8ae15fa6c449ed7c9863c 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.4
+2.1.5
index c8a57a930dcb63e7258054f1ae75b070ac63c5df..764d4b0e8431e5685f290aef6385042777811761 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Version\s2.1.4\s(CVS\s457)
-D 2001-12-05T01:00:00
+C Bug\sfix\sin\sthe\ssqliteOsLock()\sand\ssqliteOsUnlock()\sroutines\sof\sPOSIX.\nVersion\s2.1.5.\s(CVS\s325)
+D 2001-12-06T13:24:15
 F Makefile.in 352fed589f09dd94347e0bb391d047118ebd6105
 F Makefile.template 0fbf0ee1fe38183d760170a13e91fffec64e73f5
 F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
-F VERSION af44acbfe8124bdb8c63037755cf2a2f1fc4e46e
+F VERSION 592b381154fbd36565cdbefe0075aa43623f2f5a
 F aclocal.m4 11faa843caa38fd451bc6aeb43e248d1723a269d
 F config.guess f38b1e93d1e0fa6f5a6913e9e7b12774b9232588
 F config.log 6a73d03433669b10a3f0c221198c3f26b9413914
@@ -29,7 +29,7 @@ F src/hash.h a5f5b3ce2d086a172c5879b0b06a27a82eac9fac
 F src/insert.c 3526be771a01035198bef28d8f370cbcab94f46d
 F src/main.c e5fa4773e6684b81fc0bcd9d9ae4578d56660c0c
 F src/md5.c 52f677bfc590e09f71d07d7e327bd59da738d07c
-F src/os.c d7dc681438f311cf8211a78d8d87a7cbdccc2f14
+F src/os.c f4d19ca9202bfd496a07d2d55e1c4b57b6e5b48c
 F src/os.h c5c12f5f25b0a1baf9a62937b456fabcad2c1f49
 F src/pager.c 16173a7b7aff0c7bd7da94070e46d38778ab0f76
 F src/pager.h df1fb8a759ab69112ea88b9f14601a7633d0ccc0
@@ -104,7 +104,7 @@ F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
 F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
 F www/arch.tcl 72a0c80e9054cc7025a50928d28d9c75c02c2b8b
 F www/c_interface.tcl 58922228e8fdb0f6af3561a051ee8ccec6dbfd17
-F www/changes.tcl e4e3f3f0a4327afcca395cfd83fed50c9d8995be
+F www/changes.tcl 40bf58e136891ce1e5a4bda00d1c59f161560c59
 F www/crosscompile.tcl 3622ebbe518927a3854a12de51344673eb2dd060
 F www/download.tcl 1ea61f9d89a2a5a9b2cee36b0d5cf97321bdefe0
 F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
@@ -117,7 +117,7 @@ F www/speed.tcl 83457b2bf6bb430900bd48ca3dd98264d9a916a5
 F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
 F www/tclsqlite.tcl 880ef67cb4f2797b95bf1368fc4e0d8ca0fda956
 F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
-P 2fb22adbd15740d5e1581d4114cdf5149e0b62dc
-R f359da850136c640c5f78cc094d6b415
+P 121c522e673cc2a2176582981cc5cd8694095337
+R 283460d2e743d411ca396b1d81679e15
 U drh
-Z 3697df14abe76245d56ea274b665a4a2
+Z 827040ba461a0b880deb418dd73e9355
index 2f0d68be70bbe262d2f9bd8424e9ae0814f4b037..2431218061a8b5c2e8ab7893568e1fc36a5d2042 100644 (file)
@@ -1 +1 @@
-121c522e673cc2a2176582981cc5cd8694095337
\ No newline at end of file
+669454060867593290c1ce8c45bd87d011976289
\ No newline at end of file
index 959980ad6c59e9b8648cc2a8b6c8115bdb32db07..50d443267fc5034a9ae3a2b4babc9aa5e9de71c6 100644 (file)
--- a/src/os.c
+++ b/src/os.c
@@ -594,14 +594,17 @@ int sqliteOsLock(OsFile id, int wrlock){
       id.pLock->cnt++;
     }
   }
-  sqliteOsLeaveMutex();      
   if( rc==SQLITE_OK && needSysLock ){ 
     struct flock lock;
     lock.l_type = wrlock ? F_WRLCK : F_RDLCK;
     lock.l_whence = SEEK_SET;
     lock.l_start = lock.l_len = 0L;
     rc = fcntl(id.fd, F_SETLK, &lock)==0 ? SQLITE_OK : SQLITE_BUSY;
+    if( rc ){
+      id.pLock->cnt = 0;
+    }
   }
+  sqliteOsLeaveMutex();      
   return rc;
 #endif
 #if OS_WIN
@@ -631,7 +634,6 @@ int sqliteOsUnlock(OsFile id){
     rc = SQLITE_OK;
     needSysUnlock = 0;
   }
-  sqliteOsLeaveMutex();
   if( needSysUnlock ){
     struct flock lock;
     lock.l_type = F_UNLCK;
@@ -639,6 +641,7 @@ int sqliteOsUnlock(OsFile id){
     lock.l_start = lock.l_len = 0L;
     rc = fcntl(id.fd, F_SETLK, &lock)==0 ? SQLITE_OK : SQLITE_IOERR;
   }
+  sqliteOsLeaveMutex();
   return rc;
 #endif
 #if OS_WIN
index d2d7fd6d2eac3af940d49181e53873df324fc783..0de6dd33916922a2db1bc49e174b1c518123bfff 100644 (file)
@@ -17,6 +17,13 @@ proc chng {date desc} {
   puts "<DD><P><UL>$desc</UL></P></DD>"
 }
 
+chng {2001 Dec 6 (2.1.5)} {
+<li>Fix for another problem (unrelated to the one fixed in 2.1.4) 
+    that sometimes causes <b>sqlite_exec()</b> to return SQLITE_PROTOCOL
+    unnecessarily.  This time the bug was
+    in the POSIX locking code and should not effect windows users.</li>
+}
+
 chng {2001 Dec 4 (2.1.4)} {
 <li>Sometimes <b>sqlite_exec()</b> would return SQLITE_PROTOCOL when it
     should have returned SQLITE_BUSY.</li>