diff --git a/Makefile.arm-wince-mingw32ce-gcc b/Makefile.arm-wince-mingw32ce-gcc index d1ca389dc3..323b7ea482 100644 --- a/Makefile.arm-wince-mingw32ce-gcc +++ b/Makefile.arm-wince-mingw32ce-gcc @@ -103,15 +103,15 @@ SHPREFIX = # #TCL_FLAGS = #TCL_FLAGS = -DSTATIC_BUILD=1 -TCL_FLAGS = -I/home/drh/tcltk/8.4linux -#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1 +TCL_FLAGS = -I/home/drh/tcltk/8.5linux +#TCL_FLAGS = -I/home/drh/tcltk/8.5win -DSTATIC_BUILD=1 #TCL_FLAGS = -I/home/drh/tcltk/8.3hpux #### Linker options needed to link against the TCL library. # #LIBTCL = -ltcl -lm -ldl -LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl -#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt +LIBTCL = /home/drh/tcltk/8.5linux/libtcl8.5g.a -lm -ldl +#LIBTCL = /home/drh/tcltk/8.5win/libtcl85s.a -lmsvcrt #LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc #### Additional objects for SQLite library when TCL support is enabled. diff --git a/Makefile.linux-gcc b/Makefile.linux-gcc index 2bb618489a..1c9f24f4ba 100644 --- a/Makefile.linux-gcc +++ b/Makefile.linux-gcc @@ -93,15 +93,15 @@ SHPREFIX = lib # #TCL_FLAGS = #TCL_FLAGS = -DSTATIC_BUILD=1 -TCL_FLAGS = -I/home/drh/tcltk/8.4linux -#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1 +TCL_FLAGS = -I/home/drh/tcltk/8.5linux +#TCL_FLAGS = -I/home/drh/tcltk/8.5win -DSTATIC_BUILD=1 #TCL_FLAGS = -I/home/drh/tcltk/8.3hpux #### Linker options needed to link against the TCL library. # #LIBTCL = -ltcl -lm -ldl -LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl -#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt +LIBTCL = /home/drh/tcltk/8.5linux/libtcl8.5g.a -lm -ldl +#LIBTCL = /home/drh/tcltk/8.5win/libtcl85s.a -lmsvcrt #LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc #### Additional objects for SQLite library when TCL support is enabled. diff --git a/Makefile.vxworks b/Makefile.vxworks index b3f648e208..993e557959 100644 --- a/Makefile.vxworks +++ b/Makefile.vxworks @@ -110,15 +110,15 @@ SHPREFIX = lib # #TCL_FLAGS = #TCL_FLAGS = -DSTATIC_BUILD=1 -TCL_FLAGS = -I/home/drh/tcltk/8.4linux -#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1 +TCL_FLAGS = -I/home/drh/tcltk/8.5linux +#TCL_FLAGS = -I/home/drh/tcltk/8.5win -DSTATIC_BUILD=1 #TCL_FLAGS = -I/home/drh/tcltk/8.3hpux #### Linker options needed to link against the TCL library. # #LIBTCL = -ltcl -lm -ldl -LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl -#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt +LIBTCL = /home/drh/tcltk/8.5linux/libtcl8.5g.a -lm -ldl +#LIBTCL = /home/drh/tcltk/8.5win/libtcl85s.a -lmsvcrt #LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc #### Additional objects for SQLite library when TCL support is enabled. diff --git a/configure b/configure index 6928721ad5..e0c7fa0c00 100755 --- a/configure +++ b/configure @@ -12259,7 +12259,7 @@ USE_AMALGAMATION=1 # if not, then we fall back to plain tclsh. # TODO: try other versions before falling back? # -for ac_prog in tclsh8.4 tclsh +for ac_prog in tclsh8.5 tclsh do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 diff --git a/configure.ac b/configure.ac index 441cf7808c..ea8c23f511 100644 --- a/configure.ac +++ b/configure.ac @@ -139,7 +139,7 @@ USE_AMALGAMATION=1 # if not, then we fall back to plain tclsh. # TODO: try other versions before falling back? # -AC_CHECK_PROGS(TCLSH_CMD, [tclsh8.4 tclsh], none) +AC_CHECK_PROGS(TCLSH_CMD, [tclsh8.5 tclsh], none) if test "$TCLSH_CMD" = "none"; then # If we can't find a local tclsh, then building the amalgamation will fail. # We act as though --disable-amalgamation has been used. diff --git a/manifest b/manifest index 167b5239a5..35fb977532 100644 --- a/manifest +++ b/manifest @@ -1,9 +1,9 @@ -C Add\sexperimental\sunix-only\sfile-control\sto\sgrow\sand\struncate\sthe\sdatabase\sfile\sby\sa\sconfigurable\schunk\ssize. -D 2010-07-27T18:34:16 -F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 +C Merge\strunk\schanges\sinto\sexperimental\sbranch. +D 2010-07-27T18:36:38 +F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in ec08dc838fd8110fe24c92e5130bcd91cbb1ff2e -F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 -F Makefile.vxworks 4314cde20a1d9460ec5083526ea975442306ae7e +F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 +F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151 F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6 F VERSION ddbfd1d7e557883fe2fd646cffe46c28cebcff48 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@ -21,8 +21,8 @@ F art/src_logo.gif 9341ef09f0e53cd44c0c9b6fc3c16f7f3d6c2ad9 F config.guess 226d9a188c6196f3033ffc651cbc9dcee1a42977 F config.h.in 868fdb48c028421a203470e15c69ada15b9ba673 F config.sub 9ebe4c3b3dab6431ece34f16828b594fb420da55 -F configure c7e2aee57206205b4c7c0811b3d055570d95421f x -F configure.ac 14740970ddb674d92a9f5da89083dff1179014ff +F configure e0e4abf2b1a2c53a3b46e9ee9eb859fad58df4c4 x +F configure.ac 699040cc9abb7465dca5a2972bc89d227fd8f734 F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538 F doc/pager-invariants.txt 870107036470d7c419e93768676fae2f8749cf9e @@ -136,7 +136,7 @@ F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e F src/loadext.c 6d422ea91cf3d2d00408c5a8f2391cd458da85f8 F src/main.c a487fe90aecaccb142e4a6b738c7e26e99145bcd -F src/malloc.c 9d7dc6a52aa13ba3639eb40c573dd7adb3a16813 +F src/malloc.c 19a468460c7df72de245f10c06bd0625777b7c83 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 89d4ea8d5cdd55635cbaa48ad53132af6294cbb2 F src/mem2.c 12c91260fd2320eda9355dea5445b137f848c05b @@ -170,11 +170,11 @@ F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/select.c 74fef1334bec27e606ef0b19e5c41cd0a639e69c F src/shell.c fd4ccdb37c3b68de0623eb938a649e0990710714 -F src/sqlite.h.in 3b201a7aced2227339c2bba8dfbee47a823d43ad +F src/sqlite.h.in 2dfa3db44fd123ea5f0e20e87fa3d9db189feb98 F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89 F src/sqliteInt.h a9be6badc6cd6a3c1ae54475a98661cf351ecad5 F src/sqliteLimit.h 196e2f83c3b444c4548fc1874f52f84fdbda40f3 -F src/status.c 51f65ba9768846c071fa621624d55d6866fce28b +F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e F src/tclsqlite.c ae1e4fb653c91ddad7e2534d209711a12604ccc4 F src/test1.c 0bfcda72f9f8ab5c0e90fac05cc22c1c21131ddf @@ -200,7 +200,7 @@ F src/test_intarray.c d879bbf8e4ce085ab966d1f3c896a7c8b4f5fc99 F src/test_intarray.h 489edb9068bb926583445cb02589344961054207 F src/test_journal.c 424a334cdfdc8a6f975abe3641440147bded3185 F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e -F src/test_malloc.c 76bce0d5846dbfc9f24a65efab781b1ffb441380 +F src/test_malloc.c 058e41dc853b1fa8ccd1083e9571018a74aeb3a7 F src/test_mutex.c ce06b59aca168cd8c520b77159a24352a7469bd3 F src/test_onefile.c 40cf9e212a377a6511469384a64b01e6e34b2eec F src/test_osinst.c f408c6a181f2fb04c56273afd5c3e1e82f60392c @@ -620,7 +620,7 @@ F test/tclsqlite.test 8c154101e704170c2be10f137a5499ac2c6da8d3 F test/tempdb.test 800c36623d67a2ad1f58784b9c5644e0405af6e6 F test/temptable.test f42121a0d29a62f00f93274464164177ab1cc24a F test/temptrigger.test b0273db072ce5f37cf19140ceb1f0d524bbe9f05 -F test/tester.tcl cab2b46972cd50c3939a0e30e0b37e73f558bc2d +F test/tester.tcl bc01480bbf2e948b52da8943fedc4237b0735961 F test/thread001.test a3e6a7254d1cb057836cb3145b60c10bf5b7e60f F test/thread002.test afd20095e6e845b405df4f2c920cb93301ca69db F test/thread003.test b824d4f52b870ae39fc5bae4d8070eca73085dca @@ -839,10 +839,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 1d7571e4be6d96aec13cd8b3b7b10b8dc44d19a5 -R 06d24f984109c26ad9ccb04075848e30 -T *branch * experimental -T *sym-experimental * -T -sym-trunk * +P 7cf0e851d4c5e826ea22ed08291b7c91d7b1abc7 8118de2af33557f75b4f2f1b1194a21d46ccf7fe +R db6f0268ed3b851f8967be0e4ae70758 U dan -Z 84d3b6ef35de3d3ded4f7f20ba0de5c7 +Z d9d588012d8704dd90455874cd937598 diff --git a/manifest.uuid b/manifest.uuid index e26c476d95..9d45064bef 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7cf0e851d4c5e826ea22ed08291b7c91d7b1abc7 \ No newline at end of file +621824092d443425c420ba9010bbe1202fe99ea2 \ No newline at end of file diff --git a/src/malloc.c b/src/malloc.c index 6c107f9aae..b36b44f7f3 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -251,6 +251,7 @@ static int mallocWithAlarm(int n, void **pp){ if( p ){ nFull = sqlite3MallocSize(p); sqlite3StatusAdd(SQLITE_STATUS_MEMORY_USED, nFull); + sqlite3StatusAdd(SQLITE_STATUS_MALLOC_COUNT, 1); } *pp = p; return nFull; @@ -375,6 +376,7 @@ void sqlite3ScratchFree(void *p){ sqlite3_mutex_enter(mem0.mutex); sqlite3StatusAdd(SQLITE_STATUS_SCRATCH_OVERFLOW, -iSize); sqlite3StatusAdd(SQLITE_STATUS_MEMORY_USED, -iSize); + sqlite3StatusAdd(SQLITE_STATUS_MALLOC_COUNT, -1); sqlite3GlobalConfig.m.xFree(p); sqlite3_mutex_leave(mem0.mutex); }else{ @@ -446,6 +448,7 @@ void sqlite3_free(void *p){ if( sqlite3GlobalConfig.bMemstat ){ sqlite3_mutex_enter(mem0.mutex); sqlite3StatusAdd(SQLITE_STATUS_MEMORY_USED, -sqlite3MallocSize(p)); + sqlite3StatusAdd(SQLITE_STATUS_MALLOC_COUNT, -1); sqlite3GlobalConfig.m.xFree(p); sqlite3_mutex_leave(mem0.mutex); }else{ diff --git a/src/sqlite.h.in b/src/sqlite.h.in index ca0ea5dd4b..eab2b3a84e 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -5205,6 +5205,7 @@ int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag); #define SQLITE_STATUS_PARSER_STACK 6 #define SQLITE_STATUS_PAGECACHE_SIZE 7 #define SQLITE_STATUS_SCRATCH_SIZE 8 +#define SQLITE_STATUS_MALLOC_COUNT 9 /* ** CAPI3REF: Database Connection Status diff --git a/src/status.c b/src/status.c index da908bbdc5..7f05f1c68e 100644 --- a/src/status.c +++ b/src/status.c @@ -21,8 +21,8 @@ */ typedef struct sqlite3StatType sqlite3StatType; static SQLITE_WSD struct sqlite3StatType { - int nowValue[9]; /* Current value */ - int mxValue[9]; /* Maximum value */ + int nowValue[10]; /* Current value */ + int mxValue[10]; /* Maximum value */ } sqlite3Stat = { {0,}, {0,} }; @@ -150,8 +150,8 @@ int sqlite3_db_status( db->pnBytesFreed = &nByte; for(i=0; inDb; i++){ Schema *pSchema = db->aDb[i].pSchema; - if( pSchema ){ - HashElem *p; + if( ALWAYS(pSchema!=0) ){ + HashElem *p; nByte += sqlite3GlobalConfig.m.xRoundup(sizeof(HashElem)) * ( pSchema->tblHash.count diff --git a/src/test_malloc.c b/src/test_malloc.c index e32b78e20b..3fa753b7e0 100644 --- a/src/test_malloc.c +++ b/src/test_malloc.c @@ -1237,6 +1237,7 @@ static int test_status( { "SQLITE_STATUS_SCRATCH_OVERFLOW", SQLITE_STATUS_SCRATCH_OVERFLOW }, { "SQLITE_STATUS_SCRATCH_SIZE", SQLITE_STATUS_SCRATCH_SIZE }, { "SQLITE_STATUS_PARSER_STACK", SQLITE_STATUS_PARSER_STACK }, + { "SQLITE_STATUS_MALLOC_COUNT", SQLITE_STATUS_MALLOC_COUNT }, }; Tcl_Obj *pResult; if( objc!=3 ){ diff --git a/test/tester.tcl b/test/tester.tcl index d9219559c4..f485a6de5b 100644 --- a/test/tester.tcl +++ b/test/tester.tcl @@ -441,8 +441,10 @@ proc finalize_testing {} { puts "$sqlite_open_file_count files were left open" incr nErr } - if {[sqlite3_memory_used]>0} { - puts "Unfreed memory: [sqlite3_memory_used] bytes" + if {[lindex [sqlite3_status SQLITE_STATUS_MALLOC_COUNT 0] 1]>0 || + [sqlite3_memory_used]>0} { + puts "Unfreed memory: [sqlite3_memory_used] bytes in\ + [lindex [sqlite3_status SQLITE_STATUS_MALLOC_COUNT 0] 1] allocations" incr nErr ifcapable memdebug||mem5||(mem3&&debug) { puts "Writing unfreed memory log to \"./memleak.txt\"" @@ -489,6 +491,9 @@ proc show_memstats {} { set val [format {now %10d max %10d max-size %10d} \ [lindex $x 1] [lindex $x 2] [lindex $y 2]] puts "Memory used: $val" + set x [sqlite3_status SQLITE_STATUS_MALLOC_COUNT 0] + set val [format {now %10d max %10d} [lindex $x 1] [lindex $x 2]] + puts "Allocation count: $val" set x [sqlite3_status SQLITE_STATUS_PAGECACHE_USED 0] set y [sqlite3_status SQLITE_STATUS_PAGECACHE_SIZE 0] set val [format {now %10d max %10d max-size %10d} \