From: drh Date: Sat, 17 Sep 2005 17:58:22 +0000 (+0000) Subject: Fix a memory leak that occurs after malloc fails. (CVS 2713) X-Git-Tag: version-3.6.10~3447 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac1733d40987ed13f4eeaa11590284a34c69c3fb;p=thirdparty%2Fsqlite.git Fix a memory leak that occurs after malloc fails. (CVS 2713) FossilOrigin-Name: 85b931bf72dac88187e4531053a06abe25d6f462 --- diff --git a/manifest b/manifest index cdabc70cdb..be49fcd908 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sthe\scrash.test\sscript\sto\saccomodate\srecent\schanges.\s(CVS\s2712) -D 2005-09-17T17:05:19 +C Fix\sa\smemory\sleak\sthat\soccurs\safter\smalloc\sfails.\s(CVS\s2713) +D 2005-09-17T17:58:22 F Makefile.in 12784cdce5ffc8dfb707300c34e4f1eb3b8a14f1 F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -84,7 +84,7 @@ F src/vdbe.c de007d59f036fcd1b89a7d4172aa0d028e8689eb F src/vdbe.h c8e105979fc7aaf5b8004e9621904e3bd096dfa2 F src/vdbeInt.h 3dd2a29c7b0a55404c35f93caae81fb42f4cb70a F src/vdbeapi.c 85bbe1d0243a89655433d60711b4bd71979b59cd -F src/vdbeaux.c b1db8b87935e7c864e6cdd9e39e07b6efdc2f576 +F src/vdbeaux.c 57a6ced8417bdc6f06c391d9c560ecbbed644ef3 F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5 F src/vdbemem.c fea0744936008831daa17cdc75056c3ca1469690 F src/where.c 1cc55c9aa142c7ef09b427f5fd0bf0488e365fc4 @@ -309,7 +309,7 @@ F www/tclsqlite.tcl ddcf912ea48695603c8ed7efb29f0812ef8d1b49 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P c3bf17436bc1e264b4dbe255876a990a5a2b8b0c -R d3e1eb1d7df7ceac8fbbdfcdff50095f +P d594608ff37bbf1d6866adb337aa2fbcd517eada +R c67b9e4d248af499dfd433c361712ddb U drh -Z 21fd3b22e21e3f9446ccb64539193918 +Z 01b5ac88e3a5db9c8fdd344f074b13da diff --git a/manifest.uuid b/manifest.uuid index d4c2d46d3f..2b8de27bd8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d594608ff37bbf1d6866adb337aa2fbcd517eada \ No newline at end of file +85b931bf72dac88187e4531053a06abe25d6f462 \ No newline at end of file diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 53c0d41781..008be0b6b3 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -357,16 +357,23 @@ void sqlite3VdbeChangeP2(Vdbe *p, int addr, int val){ */ static void freeP3(int p3type, void *p3){ if( p3 ){ - if( p3type==P3_DYNAMIC || p3type==P3_KEYINFO ){ - sqliteFree(p3); - } - if( p3type==P3_VDBEFUNC ){ - VdbeFunc *pVdbeFunc = (VdbeFunc *)p3; - sqlite3VdbeDeleteAuxData(pVdbeFunc, 0); - sqliteFree(pVdbeFunc); - } - if( p3type==P3_MEM ){ - sqlite3ValueFree((sqlite3_value*)p3); + switch( p3type ){ + case P3_DYNAMIC: + case P3_KEYINFO: + case P3_KEYINFO_HANDOFF: { + sqliteFree(p3); + break; + } + case P3_VDBEFUNC: { + VdbeFunc *pVdbeFunc = (VdbeFunc *)p3; + sqlite3VdbeDeleteAuxData(pVdbeFunc, 0); + sqliteFree(pVdbeFunc); + break; + } + case P3_MEM: { + sqlite3ValueFree((sqlite3_value*)p3); + break; + } } } }