diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/build.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/build.c b/src/build.c index 25f61e815..d59282779 100644 --- a/src/build.c +++ b/src/build.c @@ -143,11 +143,15 @@ void sqlite3FinishCoding(Parse *pParse){ /* Begin by generating some termination code at the end of the ** vdbe program */ - if( pParse->pVdbe==0 && db->init.busy ){ - pParse->rc = SQLITE_DONE; - return; + v = pParse->pVdbe; + if( v==0 ){ + if( db->init.busy ){ + pParse->rc = SQLITE_DONE; + return; + } + v = sqlite3GetVdbe(pParse); + if( v==0 ) pParse->rc = SQLITE_ERROR; } - v = sqlite3GetVdbe(pParse); assert( !pParse->isMultiWrite || sqlite3VdbeAssertMayAbort(v, pParse->mayAbort)); if( v ){ @@ -233,7 +237,6 @@ void sqlite3FinishCoding(Parse *pParse){ } } - /* Get the VDBE program ready for execution */ if( v && pParse->nErr==0 && !db->mallocFailed ){ |