]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a memory leak that can occur when the library API is misused. (CVS 4932)
authordanielk1977 <danielk1977@noemail.net>
Fri, 28 Mar 2008 19:16:33 +0000 (19:16 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Fri, 28 Mar 2008 19:16:33 +0000 (19:16 +0000)
FossilOrigin-Name: 2b6d3e015e3088531c62230c9b3bdab47ef534da

manifest
manifest.uuid
src/vdbe.c

index 971852a00b5748f8fef0ea63c1f0b954d1b68ef5..b1de4c8b2d03cfa4d0aa47782733f4b0a82810ec 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Do\snot\sincorrectly\sreport\sa\smalloc()\sfailure\swhen\sallocating\s0\sbytes.\sFixes\sa\sproblem\sin\sbind.test.\s(CVS\s4931)
-D 2008-03-28T19:15:35
+C Fix\sa\smemory\sleak\sthat\scan\soccur\swhen\sthe\slibrary\sAPI\sis\smisused.\s(CVS\s4932)
+D 2008-03-28T19:16:34
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in cf434ce8ca902e69126ae0f94fc9f7dc7428a5fa
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -174,7 +174,7 @@ F src/update.c 2aefd3c9277792e9fa2414dfe14202119fa49fe7
 F src/utf.c 8c94fa10efc78c2568d08d436acc59df4df7191b
 F src/util.c dba9e04121eb17ec4643d6ca231ff859452cf0e2
 F src/vacuum.c 3524411bfb58aac0d87eadd3e5b7cd532772af30
-F src/vdbe.c a1413f2dd70718cbea922ae58828426504b1184a
+F src/vdbe.c 09dd6f4c5e69f17f7633d22e3f45edbafe83eeaf
 F src/vdbe.h f72201a0657d5f3d6cc008d1f8d9cc65768518c9
 F src/vdbeInt.h 0b96efdeecb0803e504bf1c16b198f87c91d6019
 F src/vdbeapi.c e03b846adf7fb938b3945019dc6c4c49ed86bb0e
@@ -619,7 +619,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P bce289753538ab504e55c4215d6cd4f5df137d9e
-R 151801c4131b431f075bc00e1e6e7959
+P b99d19d651b00dcc7bdb36facfd9ecffe4fafd9f
+R e62394b42b597cc4853ef813c5823149
 U danielk1977
-Z b54117baecd9504186f4be258a073860
+Z 5f5565eaa0d6e1fc9e5636f169e9e042
index bb54589ffcce16dac5ec8daf4683ff92a1480436..d491417c13c28014c69255adb068398dcf64e7da 100644 (file)
@@ -1 +1 @@
-b99d19d651b00dcc7bdb36facfd9ecffe4fafd9f
\ No newline at end of file
+2b6d3e015e3088531c62230c9b3bdab47ef534da
\ No newline at end of file
index 5d1bb147f7abf0c1c149f5a13138dc6993ed3b26..b27c635d56f0aaac41a22c258951f22c00427d5b 100644 (file)
@@ -43,7 +43,7 @@
 ** in this file for details.  If in doubt, do not deviate from existing
 ** commenting and indentation practices when changing or adding code.
 **
-** $Id: vdbe.c,v 1.721 2008/03/28 15:44:10 danielk1977 Exp $
+** $Id: vdbe.c,v 1.722 2008/03/28 19:16:34 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -1290,7 +1290,10 @@ case OP_Function: {
   }
   if( sqlite3SafetyOff(db) ) goto abort_due_to_misuse;
   (*ctx.pFunc->xFunc)(&ctx, n, apVal);
-  if( sqlite3SafetyOn(db) ) goto abort_due_to_misuse;
+  if( sqlite3SafetyOn(db) ){
+    sqlite3VdbeMemRelease(&ctx.s);
+    goto abort_due_to_misuse;
+  }
   if( db->mallocFailed ){
     /* Even though a malloc() has failed, the implementation of the
     ** user function may have called an sqlite3_result_XXX() function