aboutsummaryrefslogtreecommitdiff
path: root/src/trigger.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2009-08-31 05:23:32 +0000
committerdan <dan@noemail.net>2009-08-31 05:23:32 +0000
commit523a087b9ee7466c1223a9b3fa7b8c99d1d4c9fd (patch)
tree8d8343e2fd73fb070f1890e896fba89d1ec85c07 /src/trigger.c
parent76d462ee7851a3ca27e8075cc540b440a4ed0135 (diff)
downloadsqlite-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.c8
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;