diff options
author | danielk1977 <danielk1977@noemail.net> | 2007-11-16 14:55:46 +0000 |
---|---|---|
committer | danielk1977 <danielk1977@noemail.net> | 2007-11-16 14:55:46 +0000 |
commit | 932083c60f1d5ab6084d632153bb5e15371e7e50 (patch) | |
tree | aa260081dd9943cceb1f776bf1926663fb6e5093 /src | |
parent | cd7274ceb0e4a2a95cbfbc42830a60ffe115356a (diff) | |
download | sqlite-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')
-rw-r--r-- | src/trigger.c | 7 |
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; |