aboutsummaryrefslogtreecommitdiff
path: root/src/trigger.c
diff options
context:
space:
mode:
authordanielk1977 <danielk1977@noemail.net>2007-11-16 14:55:46 +0000
committerdanielk1977 <danielk1977@noemail.net>2007-11-16 14:55:46 +0000
commit932083c60f1d5ab6084d632153bb5e15371e7e50 (patch)
treeaa260081dd9943cceb1f776bf1926663fb6e5093 /src/trigger.c
parentcd7274ceb0e4a2a95cbfbc42830a60ffe115356a (diff)
downloadsqlite-932083c60f1d5ab6084d632153bb5e15371e7e50.tar.gz
sqlite-932083c60f1d5ab6084d632153bb5e15371e7e50.zip
Fix a crash that can occur after a malloc failure. Ticket #2775. (CVS 4547)
FossilOrigin-Name: c91bc8d33306881cb2501070dccced92c82cf165
Diffstat (limited to 'src/trigger.c')
-rw-r--r--src/trigger.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/trigger.c b/src/trigger.c
index 252dd7b46..efcf81244 100644
--- a/src/trigger.c
+++ b/src/trigger.c
@@ -773,12 +773,13 @@ int sqlite3CodeRowTrigger(
for(p=pTab->pTrigger; p; p=p->pNext){
int fire_this = 0;
+ sqlite3 *db = pParse->db;
/* Determine whether we should code this trigger */
if(
p->op==op &&
p->tr_tm==tr_tm &&
- (p->pSchema==p->pTabSchema || p->pSchema==pParse->db->aDb[1].pSchema) &&
+ (p->pSchema==p->pTabSchema || p->pSchema==db->aDb[1].pSchema) &&
(op!=TK_UPDATE||!p->pColumns||checkColumnOverLap(p->pColumns,pChanges))
){
TriggerStack *pS; /* Pointer to trigger-stack entry */
@@ -816,8 +817,8 @@ int sqlite3CodeRowTrigger(
/* code the WHEN clause */
endTrigger = sqlite3VdbeMakeLabel(pParse->pVdbe);
- whenExpr = sqlite3ExprDup(pParse->db, p->pWhen);
- if( sqlite3ExprResolveNames(&sNC, whenExpr) ){
+ whenExpr = sqlite3ExprDup(db, p->pWhen);
+ if( db->mallocFailed || sqlite3ExprResolveNames(&sNC, whenExpr) ){
pParse->trigStack = trigStackEntry.pNext;
sqlite3ExprDelete(whenExpr);
return 1;