]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a memory leak in DETACH when using the codec. (CVS 1317)
authordrh <drh@noemail.net>
Fri, 7 May 2004 01:46:01 +0000 (01:46 +0000)
committerdrh <drh@noemail.net>
Fri, 7 May 2004 01:46:01 +0000 (01:46 +0000)
FossilOrigin-Name: c4bd99b79c66217140781309ed06e1ff3ef4a206

manifest
manifest.uuid
src/attach.c

index fc9dfa10924410bffa02895a874f46d16984b43c..34bc81e833c5367e64408cd897c4caa632d17063 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\ssqlite_temp_directory\sglobal\svariable\swhich,\sif\sset,\sdefines\sthe\ndirectory\sin\swhich\stemporary\sfiles\sare\screated.\s(CVS\s1316)
-D 2004-05-07T00:57:06
+C Fix\sa\smemory\sleak\sin\sDETACH\swhen\susing\sthe\scodec.\s(CVS\s1317)
+D 2004-05-07T01:46:01
 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
 F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -21,7 +21,7 @@ F spec.template a38492f1c1dd349fc24cb0565e08afc53045304b
 F sqlite.1 83f4a9d37bdf2b7ef079a82d54eaf2e3509ee6ea
 F sqlite.def fc4f5734786fe4743cfe2aa98eb2da4b089edb5f
 F sqlite.pc.in 30552343140c53304c2a658c080fbe810cd09ca2
-F src/attach.c b01db0d3211f673d8e670abf7eaad04591d40d14
+F src/attach.c 026702566f941bf2bb158a0aaa86bfeb65910aa6
 F src/auth.c 4fa3b05bd19445d1c474d6751c4a508d6ea0abe1
 F src/btree.c 08a05b925b348c05d79b9b062b79e50d565678de
 F src/btree.h 41cb3ff6ebc3f6da2d0a074e39ff8c7a2287469f
@@ -188,7 +188,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
 F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 5a33e0b06f495628704d0881940a792f342facc7
-R 43b881fc6eae3c147e100628eed1f28a
+P c90ed20dc4f95eb06a5259578597593f5968bfb7
+R d8249d1567d218e36b49e8c43150a27b
 U drh
-Z fa1184d1e363db84111f9914f4de11d2
+Z 024ab278400ed22150e07d78741f9bbc
index 97592431597550cbfd80c81452481e8e54bc0966..9df63d03f9c59184531de3c4b92469df6b64d141 100644 (file)
@@ -1 +1 @@
-c90ed20dc4f95eb06a5259578597593f5968bfb7
\ No newline at end of file
+c4bd99b79c66217140781309ed06e1ff3ef4a206
\ No newline at end of file
index b333496b0367d5c5b26a14d9b3734520d64970c1..531581010fb20c87562d378c1ba3bb67ddd13298 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** This file contains code used to implement the ATTACH and DETACH commands.
 **
-** $Id: attach.c,v 1.10 2004/02/12 18:46:39 drh Exp $
+** $Id: attach.c,v 1.10.2.1 2004/05/07 01:46:01 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -137,15 +137,17 @@ void sqliteDetach(Parse *pParse, Token *pDbname){
   int i;
   sqlite *db;
   Vdbe *v;
+  Db *pDb;
 
   v = sqliteGetVdbe(pParse);
   sqliteVdbeAddOp(v, OP_Halt, 0, 0);
   if( pParse->explain ) return;
   db = pParse->db;
   for(i=0; i<db->nDb; i++){
-    if( db->aDb[i].pBt==0 || db->aDb[i].zName==0 ) continue;
-    if( strlen(db->aDb[i].zName)!=pDbname->n ) continue;
-    if( sqliteStrNICmp(db->aDb[i].zName, pDbname->z, pDbname->n)==0 ) break;
+    pDb = &db->aDb[i];
+    if( pDb->pBt==0 || pDb->zName==0 ) continue;
+    if( strlen(pDb->zName)!=pDbname->n ) continue;
+    if( sqliteStrNICmp(pDb->zName, pDbname->z, pDbname->n)==0 ) break;
   }
   if( i>=db->nDb ){
     sqliteErrorMsg(pParse, "no such database: %T", pDbname);
@@ -160,10 +162,11 @@ void sqliteDetach(Parse *pParse, Token *pDbname){
     return;
   }
 #endif /* SQLITE_OMIT_AUTHORIZATION */
-  sqliteBtreeClose(db->aDb[i].pBt);
-  db->aDb[i].pBt = 0;
-  sqliteFree(db->aDb[i].zName);
+  sqliteBtreeClose(pDb->pBt);
+  pDb->pBt = 0;
+  sqliteFree(pDb->zName);
   sqliteResetInternalSchema(db, i);
+  if( pDb->pAux && pDb->xFreeAux ) pDb->xFreeAux(pDb->pAux);
   db->nDb--;
   if( i<db->nDb ){
     db->aDb[i] = db->aDb[db->nDb];