diff --git a/manifest b/manifest index 5611dd668c..41c0e9438e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Don't\sdo\sanything\swhen\sinput\sdoclists\sare\sboth\sempty.\s\sTicket\s#2774\s(CVS\s4546) -D 2007-11-16T00:23:08 +C Fix\sa\scrash\sthat\scan\soccur\safter\sa\smalloc\sfailure.\sTicket\s#2775.\s(CVS\s4547) +D 2007-11-16T14:55:46 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7 F Makefile.in 30c7e3ba426ddb253b8ef037d1873425da6009a8 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -161,7 +161,7 @@ F src/test_server.c a6ece6c835e7eae835054124e09e947e422b1ac5 F src/test_tclvar.c b2d1115e4d489179d3f029e765211b2ad527ba59 F src/test_thread.c a98d69cae883e53d3686fc25889a5fa5f51439f8 F src/tokenize.c 67e42600ab34f976f2b1288c499ad6c98d652f0e -F src/trigger.c 724a77d54609a33bde90618934fbeddfcc729a10 +F src/trigger.c 66695e1375b969ea41a38dec9f40ea28bb0ac767 F src/update.c 2add92a6159fa73128653706574afbcd8fd1dd80 F src/utf.c ef4b7d83bae533b76c3e1bf635b113fdad86a736 F src/util.c 05f31144bbd3f1a24f4139ae029c42545cb72624 @@ -353,7 +353,7 @@ F test/lock2.test 5f9557b775662c2a5ee435378f39e10d64f65cb3 F test/lock3.test 615111293cf32aa2ed16d01c6611737651c96fb9 F test/lock4.test f358fa835dff485d462072eee991111f09e87441 F test/main.test 05f585bb70c05caac3e047903b517cbb319ed204 -F test/malloc.test 16ee55742216e3d0fdadb695fb90ad229f46b32c +F test/malloc.test 93fca57780e221192c74e51c59c4291768f33897 F test/malloc2.test 850471731efad72af5a7748e366a371933ff0b64 F test/malloc3.test 3d690cbd66c93a3d41606ed8cfcbe1c9853e9d83 F test/malloc4.test f0e5e0f639f61e2776a6c3f5308f836b3ad8b3c7 @@ -587,7 +587,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P 3bfee76fa6191c6e3aaa4632949b53253c612f36 -R 71e33fb18b19046ee138d1704767511a -U shess -Z 2e4be0fc57c5fedb87f3cd5c96e1d006 +P 75cb46f82a6a95dbe9e279dede299bafa2e91cae +R db6e8cd2b0253bfa9f1838461fb83598 +U danielk1977 +Z 8aaad7de19e849e912adf927a02f955d diff --git a/manifest.uuid b/manifest.uuid index 6aac4014a1..5c0bb12018 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -75cb46f82a6a95dbe9e279dede299bafa2e91cae \ No newline at end of file +c91bc8d33306881cb2501070dccced92c82cf165 \ No newline at end of file diff --git a/src/trigger.c b/src/trigger.c index 252dd7b46d..efcf812449 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; diff --git a/test/malloc.test b/test/malloc.test index e99854f419..fbef0df7f9 100644 --- a/test/malloc.test +++ b/test/malloc.test @@ -16,7 +16,7 @@ # to see what happens in the library if a malloc were to really fail # due to an out-of-memory situation. # -# $Id: malloc.test,v 1.51 2007/10/09 08:29:33 danielk1977 Exp $ +# $Id: malloc.test,v 1.52 2007/11/16 14:55:46 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -144,7 +144,7 @@ ifcapable trigger { BEGIN TRANSACTION; CREATE TABLE t1(a,b); CREATE TABLE t2(x,y); - CREATE TRIGGER r1 AFTER INSERT ON t1 BEGIN + CREATE TRIGGER r1 AFTER INSERT ON t1 WHEN new.a = 2 BEGIN INSERT INTO t2(x,y) VALUES(new.rowid,1); INSERT INTO t2(x,y) SELECT * FROM t2; INSERT INTO t2 SELECT * FROM t2;