diff options
author | dan <dan@noemail.net> | 2009-08-31 05:23:32 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2009-08-31 05:23:32 +0000 |
commit | 523a087b9ee7466c1223a9b3fa7b8c99d1d4c9fd (patch) | |
tree | 8d8343e2fd73fb070f1890e896fba89d1ec85c07 /src/trigger.c | |
parent | 76d462ee7851a3ca27e8075cc540b440a4ed0135 (diff) | |
download | sqlite-523a087b9ee7466c1223a9b3fa7b8c99d1d4c9fd.tar.gz sqlite-523a087b9ee7466c1223a9b3fa7b8c99d1d4c9fd.zip |
Fix another test problem and some instances where an OOM may cause a segfault.
FossilOrigin-Name: 31199db0f77cf4b32d5589a29abd9535b155164b
Diffstat (limited to 'src/trigger.c')
-rw-r--r-- | src/trigger.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/trigger.c b/src/trigger.c index 4b3e4fd57..7093cbc7f 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -843,7 +843,9 @@ static CodedTrigger *codeRowTrigger( /* Code the WHEN clause. If it evaluates to false (or NULL) the ** sub-vdbe is immediately halted. */ pWhen = sqlite3ExprDup(db, pTrigger->pWhen, 0); - if( SQLITE_OK==sqlite3ResolveExprNames(&sNC, pWhen) ){ + if( SQLITE_OK==sqlite3ResolveExprNames(&sNC, pWhen) + && db->mallocFailed==0 + ){ iEndTrigger = sqlite3VdbeMakeLabel(v); sqlite3ExprIfFalse(pSubParse, pWhen, iEndTrigger, SQLITE_JUMPIFNULL); } @@ -859,7 +861,9 @@ static CodedTrigger *codeRowTrigger( VdbeComment((v, "End: %s.%s", pTrigger->zName, onErrorText(orconf))); transferParseError(pParse, pSubParse); - pProgram->aOp = sqlite3VdbeTakeOpArray(v, &pProgram->nOp, &pParse->nArg); + if( db->mallocFailed==0 ){ + pProgram->aOp = sqlite3VdbeTakeOpArray(v, &pProgram->nOp, &pParse->nArg); + } pProgram->nMem = pSubParse->nMem; pProgram->nCsr = pSubParse->nTab; pProgram->token = (void *)pTrigger; |