diff options
Diffstat (limited to 'src/tokenize.c')
-rw-r--r-- | src/tokenize.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/tokenize.c b/src/tokenize.c index 2d49fe8cd..c50395aeb 100644 --- a/src/tokenize.c +++ b/src/tokenize.c @@ -15,7 +15,7 @@ ** individual tokens and sends those tokens one-by-one over to the ** parser for analysis. ** -** $Id: tokenize.c,v 1.119 2006/06/11 23:41:56 drh Exp $ +** $Id: tokenize.c,v 1.120 2006/06/12 11:24:37 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -483,10 +483,19 @@ abort_parse: pParse->nTableLock = 0; } #endif + #ifndef SQLITE_OMIT_VIRTUALTABLE sqliteFree(pParse->zArg); #endif - sqlite3DeleteTable(pParse->db, pParse->pNewTable); + + if( !IN_DECLARE_VTAB ){ + /* If the pParse->declareVtab flag is set, do not delete any table + ** structure built up in pParse->pNewTable. The calling code (see vtab.c) + ** will take responsibility for freeing the Table structure. + */ + sqlite3DeleteTable(pParse->db, pParse->pNewTable); + } + sqlite3DeleteTrigger(pParse->pNewTrigger); sqliteFree(pParse->apVarExpr); if( nErr>0 && (pParse->rc==SQLITE_OK || pParse->rc==SQLITE_DONE) ){ |