aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-10-09 14:36:47 +0000
committerdrh <drh@noemail.net>2012-10-09 14:36:47 +0000
commit5a55826bcda624f8fa4a3b7cc0c8845a689d8957 (patch)
tree377f62a356d14b4fc9dbba32a348a89fe80d44ab /src
parent2f546ee914eadadc20f37e0e03e74fd0e4878533 (diff)
downloadsqlite-5a55826bcda624f8fa4a3b7cc0c8845a689d8957.tar.gz
sqlite-5a55826bcda624f8fa4a3b7cc0c8845a689d8957.zip
Avoid an assertion fault and/or freeing memory while it is still in use when
an error occurs during virtual table construction. FossilOrigin-Name: a02599ad85d02470c9effa51c02dbda7796bfa16
Diffstat (limited to 'src')
-rw-r--r--src/vtab.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/vtab.c b/src/vtab.c
index d3f8126ad..39fbacacb 100644
--- a/src/vtab.c
+++ b/src/vtab.c
@@ -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);
}