]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the database connection mutex is held before calling
authordrh <drh@noemail.net>
Wed, 16 Apr 2008 00:49:12 +0000 (00:49 +0000)
committerdrh <drh@noemail.net>
Wed, 16 Apr 2008 00:49:12 +0000 (00:49 +0000)
sqlite3SafetyOn() or sqlite3SafetyOff().  Ticket #3059. (CVS 5016)

FossilOrigin-Name: d35dea059e2cb936e4277f513f036b9b0bdfc4a5

manifest
manifest.uuid
src/main.c
src/util.c

index aa989d026a940f0ae07539697621e350ba7281c3..59d2c11b73c1496a6586096a6e19b02db0bb467a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Back\sout\sthe\szero-terminator\soptimization\sintroduced\sin\scheck-in\s(4915).\nTicket\s#3056.\s(CVS\s5015)
-D 2008-04-16T00:28:14
+C Make\ssure\sthe\sdatabase\sconnection\smutex\sis\sheld\sbefore\scalling\nsqlite3SafetyOn()\sor\ssqlite3SafetyOff().\s\sTicket\s#3059.\s(CVS\s5016)
+D 2008-04-16T00:49:12
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 25b3282a4ac39388632c2fb0e044ff494d490952
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -104,7 +104,7 @@ F src/insert.c 5208f16ddfc77d9e72bb30041a1d04a18b18a170
 F src/journal.c 807bed7a158979ac8d63953e1774e8d85bff65e2
 F src/legacy.c 8267890e6a0a71f13b680794520999c642299081
 F src/loadext.c 5c20a5afeb154e68d62ed6d9c634add1b21387fd
-F src/main.c e025166b656a33dfa091a3d8cb99fb1172876a5f
+F src/main.c 3300916fb626e3e3873c25e9cd966a3b311d1c68
 F src/malloc.c 12c1ae98ef1eff34b13c9eb526e0b7b479e1e820
 F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
 F src/mem1.c fc716ff521b6dd3e43eaa211967383308800e70a
@@ -173,7 +173,7 @@ F src/tokenize.c a96abe15a8db6fea2e964cdce2acba9ed17bc26f
 F src/trigger.c 9bd3b6fa0beff4a02d262c96466f752ec15a7fc3
 F src/update.c 57282dae1ffffaf4aedc3201ed77f8ef09be4f45
 F src/utf.c 8c94fa10efc78c2568d08d436acc59df4df7191b
-F src/util.c 8b17ea7ad27914c6e2c4a377ca7db743fb7e29a8
+F src/util.c 943caa4071488b20ed90588f0704c6825f91836b
 F src/vacuum.c 3524411bfb58aac0d87eadd3e5b7cd532772af30
 F src/vdbe.c e4a3df1221a8ee8025c7132cf8ab6bc88eae4e02
 F src/vdbe.h bfd84bda447f39cb599302c7ec85067dae20453c
@@ -630,7 +630,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P cafa8ac2687890355a7faa751d71859eb0fadd01
-R 10d0ed716771909e41eeeb97e122c258
+P cce8deae2d556916e2817e0cb9748dceb162085d
+R 7a340507e41c10c8a2cb1cddf539eada
 U drh
-Z bf5879aa4a093fef323324323481ba2a
+Z ea939e8bf0d325aad906011ffe8ec67e
index 189cab89d7d7aa52194ee36e6acfa85d5107fdaf..03d55f9b6730018c4f8216fa4e45deecff9e9561 100644 (file)
@@ -1 +1 @@
-cce8deae2d556916e2817e0cb9748dceb162085d
\ No newline at end of file
+d35dea059e2cb936e4277f513f036b9b0bdfc4a5
\ No newline at end of file
index e714722974715b31bd46f7d65760175015b3e660..940a3c1c2aaba591ab811355b5109e058885ab39 100644 (file)
@@ -14,7 +14,7 @@
 ** other files are for internal use by SQLite and should not be
 ** accessed by users of the library.
 **
-** $Id: main.c,v 1.433 2008/04/15 04:02:41 drh Exp $
+** $Id: main.c,v 1.434 2008/04/16 00:49:12 drh Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -1435,8 +1435,8 @@ int sqlite3_table_column_metadata(
   int autoinc = 0;
 
   /* Ensure the database schema has been loaded */
-  (void)sqlite3SafetyOn(db);
   sqlite3_mutex_enter(db->mutex);
+  (void)sqlite3SafetyOn(db);
   sqlite3BtreeEnterAll(db);
   rc = sqlite3Init(db, &zErrMsg);
   sqlite3BtreeLeaveAll(db);
index 22da5161084a7df4f4bb1afcabad56603f24568b..28cfffa4a6704d46b36da88be0a9a7bd97b470f5 100644 (file)
@@ -14,7 +14,7 @@
 ** This file contains functions for allocating memory, comparing
 ** strings, and stuff like that.
 **
-** $Id: util.c,v 1.221 2008/04/14 14:34:44 drh Exp $
+** $Id: util.c,v 1.222 2008/04/16 00:49:12 drh Exp $
 */
 #include "sqliteInt.h"
 #include <stdarg.h>
@@ -683,6 +683,7 @@ void *sqlite3HexToBlob(sqlite3 *db, const char *z, int n){
 int sqlite3SafetyOn(sqlite3 *db){
   if( db->magic==SQLITE_MAGIC_OPEN ){
     db->magic = SQLITE_MAGIC_BUSY;
+    assert( sqlite3_mutex_held(db->mutex) );
     return 0;
   }else if( db->magic==SQLITE_MAGIC_BUSY ){
     db->magic = SQLITE_MAGIC_ERROR;
@@ -701,6 +702,7 @@ int sqlite3SafetyOn(sqlite3 *db){
 int sqlite3SafetyOff(sqlite3 *db){
   if( db->magic==SQLITE_MAGIC_BUSY ){
     db->magic = SQLITE_MAGIC_OPEN;
+    assert( sqlite3_mutex_held(db->mutex) );
     return 0;
   }else{
     db->magic = SQLITE_MAGIC_ERROR;