]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid an assertion fault and/or freeing memory while it is still in use when
authordan <dan@noemail.net>
Thu, 7 Mar 2013 11:03:51 +0000 (11:03 +0000)
committerdan <dan@noemail.net>
Thu, 7 Mar 2013 11:03:51 +0000 (11:03 +0000)
an error occurs during virtual table construction. Cherrypick of [a02599ad85d].

FossilOrigin-Name: 760072ceea294fd7d168de28de9e775e545ef30e

manifest
manifest.uuid
src/vtab.c

index a7e15030a23bce65a656869be403b9adcf6f6863..6ffc8bb3612d4fb9786575555fe369e61dc9d760 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Backport\sVSIX\stooling\sand\spackaging\sfixes\sand\senhancements.
-D 2012-12-07T04:46:53.606
+C Avoid\san\sassertion\sfault\sand/or\sfreeing\smemory\swhile\sit\sis\sstill\sin\suse\swhen\nan\serror\soccurs\sduring\svirtual\stable\sconstruction.\sCherrypick\sof\s[a02599ad85d].
+D 2013-03-07T11:03:51.343
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in abd5c10d21d1395f140d9e50ea999df8fa4d6376
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -247,7 +247,7 @@ F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb
 F src/vdbemem.c cb55e84b8e2c15704968ee05f0fae25883299b74
 F src/vdbesort.c 0dc1b274dcb4d4c8e71b0b2b15261f286caba39b
 F src/vdbetrace.c 8bd5da325fc90f28464335e4cc4ad1407fe30835
-F src/vtab.c bf61d2b47fbe544cf128f176d950a95ab9fa7990
+F src/vtab.c 940ea10c126f6e288725e80bb173f606670430f3
 F src/wal.c 5acb3e7bbd31f10ba39acad9ce6b399055337a9d
 F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6
 F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b
@@ -1015,7 +1015,7 @@ F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P 325364a984e9a5c0825810bf50f57e026ff3b8dd
-R b6cebc4c5e41527b0959f9cee96db5b7
-U mistachkin
-Z b5160dec06b175ffc06bc0e43cb2677f
+P e890bcde34370079f4da011da39e4ba8224ffab4
+R 3aee953b86407273366f5f75f4c5ca92
+U dan
+Z 1435144ed9b3c053d9bb36c7383b5519
index e0693b7ddf9d5b39976a20ff0b21a5580055909b..46ed04829333c229e62360008e1329819ba332a7 100644 (file)
@@ -1 +1 @@
-e890bcde34370079f4da011da39e4ba8224ffab4
\ No newline at end of file
+760072ceea294fd7d168de28de9e775e545ef30e
\ No newline at end of file
index 6219f8b0ba7f4df2d510de995c3dd85d3277714f..259613019d6337188c10fc8fe995818b6bf69a35 100644 (file)
@@ -263,9 +263,8 @@ void sqlite3VtabClear(sqlite3 *db, Table *p){
   if( !db || db->pnBytesFreed==0 ) vtabDisconnectAll(0, p);
   if( p->azModuleArg ){
     int i;
-    assert( p->nModuleArg<2 || p->azModuleArg[1]==0 );
     for(i=0; i<p->nModuleArg; i++){
-      sqlite3DbFree(db, p->azModuleArg[i]);
+      if( i!=1 ) sqlite3DbFree(db, p->azModuleArg[i]);
     }
     sqlite3DbFree(db, p->azModuleArg);
   }