aboutsummaryrefslogtreecommitdiff
path: root/src/prepare.c
diff options
context:
space:
mode:
authordanielk1977 <danielk1977@noemail.net>2009-03-23 17:11:26 +0000
committerdanielk1977 <danielk1977@noemail.net>2009-03-23 17:11:26 +0000
commita8bbef84bf3214905ceb9ea32fc249010dbde41a (patch)
tree14594a477429fb069f01068b39d30e208ffde5f0 /src/prepare.c
parentbc73971db6162bf60d775775b180cea06615b29c (diff)
downloadsqlite-a8bbef84bf3214905ceb9ea32fc249010dbde41a.tar.gz
sqlite-a8bbef84bf3214905ceb9ea32fc249010dbde41a.zip
Fix an obscure race condition that can occur when multiple threads, shared cache and DDL statements are combined. Enhance notify2.test to test this scenario. (CVS 6373)
FossilOrigin-Name: 92ec5975123284aff3a69ee16c397d9e2a844c0b
Diffstat (limited to 'src/prepare.c')
-rw-r--r--src/prepare.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/prepare.c b/src/prepare.c
index 3367f7979..282e46a84 100644
--- a/src/prepare.c
+++ b/src/prepare.c
@@ -13,7 +13,7 @@
** interface, and routines that contribute to loading the database schema
** from disk.
**
-** $Id: prepare.c,v 1.111 2009/03/19 18:51:07 danielk1977 Exp $
+** $Id: prepare.c,v 1.112 2009/03/23 17:11:27 danielk1977 Exp $
*/
#include "sqliteInt.h"
@@ -91,7 +91,7 @@ int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
pData->rc = rc;
if( rc==SQLITE_NOMEM ){
db->mallocFailed = 1;
- }else if( rc!=SQLITE_INTERRUPT ){
+ }else if( rc!=SQLITE_INTERRUPT && (rc&0xff)!=SQLITE_LOCKED ){
corruptSchema(pData, argv[0], zErr);
}
sqlite3DbFree(db, zErr);