From 45041e263a683d1d7a226d24a325839444d4e46a Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 7 May 2004 01:46:01 +0000 Subject: [PATCH] Fix a memory leak in DETACH when using the codec. (CVS 1317) FossilOrigin-Name: c4bd99b79c66217140781309ed06e1ff3ef4a206 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/attach.c | 17 ++++++++++------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index fc9dfa1092..34bc81e833 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 9759243159..9df63d03f9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c90ed20dc4f95eb06a5259578597593f5968bfb7 \ No newline at end of file +c4bd99b79c66217140781309ed06e1ff3ef4a206 \ No newline at end of file diff --git a/src/attach.c b/src/attach.c index b333496b03..531581010f 100644 --- a/src/attach.c +++ b/src/attach.c @@ -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; inDb; 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( inDb ){ db->aDb[i] = db->aDb[db->nDb]; -- 2.47.2