1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-01-06 08:01:16 +03:00

Fix a memory leak that occurs after malloc fails. (CVS 2713)

FossilOrigin-Name: 85b931bf72dac88187e4531053a06abe25d6f462
This commit is contained in:
drh
2005-09-17 17:58:22 +00:00
parent 0aadf33312
commit ac1733d409
3 changed files with 24 additions and 17 deletions

View File

@@ -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

View File

@@ -1 +1 @@
d594608ff37bbf1d6866adb337aa2fbcd517eada
85b931bf72dac88187e4531053a06abe25d6f462

View File

@@ -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;
}
}
}
}