diff options
author | drh <drh@noemail.net> | 2008-07-31 17:16:05 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2008-07-31 17:16:05 +0000 |
commit | 0a60a384e782335951923deba5347e23be12cb31 (patch) | |
tree | e178a88063f58d867182884a466a76661f82a8e7 /src/malloc.c | |
parent | 2462e322464199d3c1551a6a7236a311f0abd701 (diff) | |
download | sqlite-0a60a384e782335951923deba5347e23be12cb31.tar.gz sqlite-0a60a384e782335951923deba5347e23be12cb31.zip |
Change the definition of SQLITE_CONFIG_PAGECACHE and
SQLITE_CONFIG_SCRATCH to omit the magic "+4" in the buffer size
calculation. (CVS 5512)
FossilOrigin-Name: e7ed0fe640a39053009eac52a7f055b121750e57
Diffstat (limited to 'src/malloc.c')
-rw-r--r-- | src/malloc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/malloc.c b/src/malloc.c index c7b2e650f..a68378a0f 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -12,7 +12,7 @@ ** ** Memory allocation functions used throughout sqlite. ** -** $Id: malloc.c,v 1.31 2008/07/29 14:29:07 drh Exp $ +** $Id: malloc.c,v 1.32 2008/07/31 17:16:05 drh Exp $ */ #include "sqliteInt.h" #include <stdarg.h> @@ -115,6 +115,7 @@ int sqlite3MallocInit(void){ if( sqlite3Config.pScratch && sqlite3Config.szScratch>=3000 && sqlite3Config.nScratch>0 ){ int i; + sqlite3Config.szScratch -= 4; mem0.aScratchFree = (u32*)&((char*)sqlite3Config.pScratch) [sqlite3Config.szScratch*sqlite3Config.nScratch]; for(i=0; i<sqlite3Config.nScratch; i++){ mem0.aScratchFree[i] = i; } @@ -124,8 +125,13 @@ int sqlite3MallocInit(void){ sqlite3Config.szScratch = 0; } if( sqlite3Config.pPage && sqlite3Config.szPage>=512 - && sqlite3Config.nPage>0 ){ + && sqlite3Config.nPage>1 ){ int i; + int overhead; + int sz = sqlite3Config.szPage; + int n = sqlite3Config.nPage; + overhead = (4*n + sz - 1)/sz; + sqlite3Config.nPage -= overhead; mem0.aPageFree = (u32*)&((char*)sqlite3Config.pPage) [sqlite3Config.szPage*sqlite3Config.nPage]; for(i=0; i<sqlite3Config.nPage; i++){ mem0.aPageFree[i] = i; } |