From 0e3a6f3f5304e651b695e393525a74b064047f4a Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 30 Mar 2007 20:40:34 +0000 Subject: [PATCH] Fix a memory leak that occurs after a malloc failure in trigger parsing. (CVS 3772) FossilOrigin-Name: 407a85e69b7a1229218a5ce9a9e31255c7070294 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/trigger.c | 6 +++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index 923f2a9f22..95c844f36c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\smemory\sleak\sin\smulti-database\scommit.\s\sAlso\senhance\sa\scomment\sthat\nexplains\swhy\sa\sparticular\svalgrind\serror\sis\sharmless.\s(CVS\s3771) -D 2007-03-30T18:42:56 +C Fix\sa\smemory\sleak\sthat\soccurs\safter\sa\smalloc\sfailure\sin\strigger\sparsing.\s(CVS\s3772) +D 2007-03-30T20:40:34 F Makefile.in 2f2c3bf69faf0ae7b8e8af4f94f1986849034530 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -118,7 +118,7 @@ F src/test_schema.c ced72140a3a25c148975428e170ec1850d3c3a7d F src/test_server.c a6460daed0b92ecbc2531b6dc73717470e7a648c F src/test_tclvar.c 315e77c17f128ff8c06b38c08617fd07c825a95b F src/tokenize.c bb1732ef2b6fc2143f93ff28a45d3dcb04c1d396 -F src/trigger.c 8c55d31876013ed4e97ee7ce24478fbe00db49bb +F src/trigger.c 7f65762a7400031937774067a07cddc3f3c03e29 F src/update.c 3359041db390a8f856d67272f299600e2104f350 F src/utf.c 67ecb1032bc0b42c105e88d65ef9d9f626eb0e1f F src/util.c 8e8180ee5597f2474c1da311ff3c464b6966c0f1 @@ -447,7 +447,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P c1aca18fad35be60066a08f5bd09772d24375af6 -R d3989353f3b76217fb1661204ddd5484 +P 28c7ed1eb799203a569cdae97da974b347f39579 +R a0905c32cd90b0b80a1bc1360611ccd5 U drh -Z d9338063531486f14e383e7f3e14d3e3 +Z bf54325597d09c764d008fa62cbdee79 diff --git a/manifest.uuid b/manifest.uuid index 9174d8578b..5023c8f618 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -28c7ed1eb799203a569cdae97da974b347f39579 \ No newline at end of file +407a85e69b7a1229218a5ce9a9e31255c7070294 \ No newline at end of file diff --git a/src/trigger.c b/src/trigger.c index a6eabbf62a..f410d9364d 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -390,7 +390,11 @@ TriggerStep *sqlite3TriggerUpdateStep( int orconf /* The conflict algorithm. (OE_Abort, OE_Ignore, etc) */ ){ TriggerStep *pTriggerStep = sqliteMalloc(sizeof(TriggerStep)); - if( pTriggerStep==0 ) return 0; + if( pTriggerStep==0 ){ + sqlite3ExprListDelete(pEList); + sqlite3ExprDelete(pWhere); + return 0; + } pTriggerStep->op = TK_UPDATE; pTriggerStep->target = *pTableName;