]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a memory leak that occurs after malloc fails. (CVS 2713)
authordrh <drh@noemail.net>
Sat, 17 Sep 2005 17:58:22 +0000 (17:58 +0000)
committerdrh <drh@noemail.net>
Sat, 17 Sep 2005 17:58:22 +0000 (17:58 +0000)
FossilOrigin-Name: 85b931bf72dac88187e4531053a06abe25d6f462

manifest
manifest.uuid
src/vdbeaux.c

index cdabc70cdb41f1fbd602200614059389849e5295..be49fcd908abf16745c8be21c093c217a4c3c359 100644 (file)
--- 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
index d4c2d46d3fec6a3a9b4c1893b4eef90fc18e3a50..2b8de27bd85eccd0c0d6169ce9578e1ddec6a2eb 100644 (file)
@@ -1 +1 @@
-d594608ff37bbf1d6866adb337aa2fbcd517eada
\ No newline at end of file
+85b931bf72dac88187e4531053a06abe25d6f462
\ No newline at end of file
index 53c0d41781148e33ce491a3af23aca1bcb8af291..008be0b6b35a34f0e966c0c7e338ec673dd9872c 100644 (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;
+      }
     }
   }
 }