Bug fixes: Plug a memory leak introduced by the previous check-in. Get

the amalgamation to the point where it will compile. (CVS 5241)

FossilOrigin-Name: 005f8eaef5ae05cef5c76f3afe299eaa2cf8af2f
This commit is contained in:
drh 2008-06-19 01:03:17 +00:00
parent f714199054
commit 65bbf29ee3
8 changed files with 36 additions and 24 deletions

View File

@ -1,5 +1,5 @@
C Add\ssome\stest\slogic\sto\sthe\snew\smemory\sallocation\ssubsystem.\s\s(Lots\smore\sneeded.)\nThe\stest\ssuite\sis\scurrently\sindicating\smemory\sleaks,\sthough\sit\sis\sunclear\sif\nthis\sis\sa\strue\scode\sproblem\sor\sjust\san\sinstrumentation\sproblem.\s(CVS\s5240)
D 2008-06-19T00:16:08
C Bug\sfixes:\s\sPlug\sa\smemory\sleak\sintroduced\sby\sthe\sprevious\scheck-in.\s\sGet\nthe\samalgamation\sto\sthe\spoint\swhere\sit\swill\scompile.\s(CVS\s5241)
D 2008-06-19T01:03:18
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
F Makefile.in ff6f90048555a0088f6a4b7406bed5e55a7c4eff
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -96,7 +96,7 @@ F src/attach.c b18ba42c77f7d3941f5d23d2ca20fa1d841a4e91
F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627
F src/bitvec.c ab50c4b8c6a899dae499f5a805eebe4223c78269
F src/btmutex.c 483ced3c52205b04b97df69161fadbf87f4f1ea2
F src/btree.c a7c8e782cf6a36eb4b15f263200215b572f95406
F src/btree.c 54a5e5f84657e57313be156cdf47dfc8d1182b39
F src/btree.h b1bd7e0b8c2e33658aaf447cb0d1d94f74664b6b
F src/btreeInt.h 02325f04758dba0fcd0c08ac55cd9b189dad61a5
F src/build.c 88cc5501a87f72d0538b040001d88d31f994edea
@ -115,16 +115,16 @@ F src/insert.c c2ead6c36566de8e3f130e7ab1431723a269d5d7
F src/journal.c cffd2cd214e58c0e99c3ff632b3bee6c7cbb260e
F src/legacy.c 3626c71fb70912abec9a4312beba753a9ce800df
F src/loadext.c 2ac671f42a8ce15e2a58155b9d7f6c61eb7e127e
F src/main.c cac2d0736589536c2a11a80676b18806dabff21f
F src/main.c d75dad89c689c92cfb20d45f3ef31baca08eb896
F src/malloc.c 33b8a20684e65ce13f94e5b14fb0e6cdc335c5d1
F src/md5.c 008216bbb5d34c6fbab5357aa68575ad8a31516a
F src/mem1.c 159f10e280f2d9aea597cf938851e61652dd5c3d
F src/mem2.c 468a7fd5e0ce1909cfb554d7589af1d4a61f14bb
F src/mem2.c 23f9538f35fbcd5665afe7056a56be0c7ed65aa7
F src/mem3.c 28b4812b87470a00b11821fb5850e7cabcce06c6
F src/mem4.c 6703adb1717b26d9d70a1c2586b4b7b7ffee7909
F src/mem5.c ad31a0a481b86b86f4ac0b6d952e69727d4e113a
F src/mutex.c 67393ac4e82d2ff09622ec33b9f289deb9d8825e
F src/mutex.h 62ce61355b7a10a7c262e71aa9ed848a945a9353
F src/mutex.h e9f3a02e58e6858b0c4e29bb8a4bc811807f3178
F src/mutex_os2.c d9eb88ad198c59f1a45d90b597c258562a40e52c
F src/mutex_unix.c 469a35c105435794375d683f75cad9e848817d19
F src/mutex_w32.c e03baa369c5e8e7ea4dd2e5b3d098e047f7a2f06
@ -140,12 +140,12 @@ F src/parse.y 8c2c3145eebe1964eb279cb3c4e502eae28bb0fa
F src/pragma.c 70e7c865dce85fdf9df81848af2169009a56ed08
F src/prepare.c 3c19149e75fbf3b08471a389f064da7302cad9c5
F src/printf.c 8b063da9dcde26b7c500a01444b718d86f21bc6e
F src/random.c 362b62e26db90ec9296903377a9d74b4669aa515
F src/random.c 5c754319d38abdd6acd74601ee0105504adc508a
F src/select.c 669687459e7d0193c89de06c5dbed55b4a41191c
F src/shell.c a12ea645271b7876c8f080146f48e20b00d367ec
F src/sqlite.h.in f69427508e76eec76dae7f5fffdfefc05a9d4329
F src/sqlite3ext.h faacd0e6a81aabee0861c6d7883c9172e74ef5b3
F src/sqliteInt.h 8c2532dd9f53b05d2d6ec9e772d726718a0d4ac6
F src/sqliteInt.h 6dd55232e738a4dac23475cd4b0e444dff75c896
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
F src/table.c 1fa8f8113ac9cbc09ae4801c6d2a7f0af82c5822
F src/tclsqlite.c 4dd9ee4cb44846ad9bcc4d0da8088c1e7d4b33d9
@ -598,7 +598,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
P 8b14a220f261b354e7d2d16dc3fe30c5d3d34143
R a54a916e07bd9133d83929df10e422cc
P cb1f11cd9764cf0275e88e1f6342e366e5536bfd
R d31a6f690398344ca4203edcb0e9db61
U drh
Z 67cf172775ef7e1849c4e693b07767c0
Z 8c5da773b6bfb26a8c5d93d48d8bcf9f

View File

@ -1 +1 @@
cb1f11cd9764cf0275e88e1f6342e366e5536bfd
005f8eaef5ae05cef5c76f3afe299eaa2cf8af2f

View File

@ -9,7 +9,7 @@
** May you share freely, never taking more than you give.
**
*************************************************************************
** $Id: btree.c,v 1.467 2008/06/19 00:16:08 drh Exp $
** $Id: btree.c,v 1.468 2008/06/19 01:03:18 drh Exp $
**
** This file implements a external (disk-based) database using BTrees.
** See the header comment on "btreeInt.h" for additional information.
@ -1463,6 +1463,7 @@ int sqlite3BtreeClose(Btree *p){
}
sqlite3_free(pBt->pSchema);
freeTempSpace(pBt);
sqlite3_free(pBt);
}
#ifndef SQLITE_OMIT_SHARED_CACHE

View File

@ -14,7 +14,7 @@
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
** $Id: main.c,v 1.451 2008/06/19 00:16:08 drh Exp $
** $Id: main.c,v 1.452 2008/06/19 01:03:18 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@ -76,7 +76,9 @@ int sqlite3_initialize(void){
if( sqlite3IsInit ) return SQLITE_OK;
rc = sqlite3MutexInit();
if( rc==SQLITE_OK ){
#ifndef SQLITE_MUTEX_NOOP
sqlite3_mutex *pMutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER);
#endif
sqlite3_mutex_enter(pMutex);
if( sqlite3IsInit==0 ){
sqlite3IsInit = 1;

View File

@ -19,7 +19,7 @@
** This file contains implementations of the low-level memory allocation
** routines specified in the sqlite3_mem_methods object.
**
** $Id: mem2.c,v 1.32 2008/06/18 17:09:10 danielk1977 Exp $
** $Id: mem2.c,v 1.33 2008/06/19 01:03:18 drh Exp $
*/
#include "sqliteInt.h"
@ -162,7 +162,11 @@ static int sqlite3MemSize(void *p){
** Initialize the memory allocation subsystem.
*/
static int sqlite3MemInit(void *NotUsed){
mem.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MEM);
if( !sqlite3Config.bMemstat ){
/* If memory status is enabled, then the malloc.c wrapper will already
** hold the STATIC_MEM mutex when the routines here are invoked. */
mem.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MEM);
}
return SQLITE_OK;
}
@ -248,7 +252,7 @@ static void sqlite3MemFree(void *pPrior){
struct MemBlockHdr *pHdr;
void **pBt;
char *z;
assert( mem.mutex!=0 );
assert( sqlite3Config.bMemstat || mem.mutex!=0 );
pHdr = sqlite3MemsysGetHeader(pPrior);
pBt = (void**)pHdr;
pBt -= pHdr->nBacktraceSlots;

View File

@ -19,7 +19,7 @@
** Source files should #include the sqliteInt.h file and let that file
** include this one indirectly.
**
** $Id: mutex.h,v 1.5 2008/06/18 18:57:42 danielk1977 Exp $
** $Id: mutex.h,v 1.6 2008/06/19 01:03:18 drh Exp $
*/
@ -77,6 +77,7 @@
#define sqlite3_mutex_leave(X)
#define sqlite3_mutex_held(X) 1
#define sqlite3_mutex_notheld(X) 1
#define sqlite3MutexAlloc(X) 0
#define sqlite3MutexInit() SQLITE_OK
#define sqlite3MutexEnd()
#endif

View File

@ -15,7 +15,7 @@
** Random numbers are used by some of the database backends in order
** to generate random integer keys for tables or random filenames.
**
** $Id: random.c,v 1.24 2008/06/18 17:09:10 danielk1977 Exp $
** $Id: random.c,v 1.25 2008/06/19 01:03:18 drh Exp $
*/
#include "sqliteInt.h"
@ -92,7 +92,9 @@ static int randomByte(void){
*/
void sqlite3_randomness(int N, void *pBuf){
unsigned char *zBuf = pBuf;
#ifndef SQLITE_MUTEX_NOOP
sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PRNG);
#endif
sqlite3_mutex_enter(mutex);
while( N-- ){
*(zBuf++) = randomByte();

View File

@ -11,7 +11,7 @@
*************************************************************************
** Internal interface definitions for SQLite.
**
** @(#) $Id: sqliteInt.h,v 1.716 2008/06/19 00:16:08 drh Exp $
** @(#) $Id: sqliteInt.h,v 1.717 2008/06/19 01:03:18 drh Exp $
*/
#ifndef _SQLITEINT_H_
#define _SQLITEINT_H_
@ -1805,10 +1805,12 @@ void *sqlite3PageMalloc(int);
void sqlite3PageFree(void*);
void sqlite3MemSetDefault(void);
sqlite3_mutex_methods *sqlite3DefaultMutex(void);
sqlite3_mutex *sqlite3MutexAlloc(int);
int sqlite3MutexInit(void);
int sqlite3MutexEnd(void);
#ifndef SQLITE_MUTEX_NOOP
sqlite3_mutex_methods *sqlite3DefaultMutex(void);
sqlite3_mutex *sqlite3MutexAlloc(int);
int sqlite3MutexInit(void);
int sqlite3MutexEnd(void);
#endif
void sqlite3StatusReset(void);
int sqlite3StatusValue(int);