From ac86169fff3804caff3760804d0aa741b696e13e Mon Sep 17 00:00:00 2001 From: danielk1977 Date: Sat, 28 Mar 2009 10:54:22 +0000 Subject: [PATCH] The fix in (6395) was not correct. Fix #3756 a different way. (CVS 6397) FossilOrigin-Name: 9278f7b1e1f2d0d4c2f8829ca801a769e512c2a6 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/btree.c | 9 ++++++++- src/pager.c | 4 +--- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/manifest b/manifest index 9042485e19..896c43a595 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\scouple\sof\stest\sscript\sbugs.\sNo\schanges\sto\sSQLite\scode.\s(CVS\s6396) -D 2009-03-28T07:03:42 +C The\sfix\sin\s(6395)\swas\snot\scorrect.\sFix\s#3756\sa\sdifferent\sway.\s(CVS\s6397) +D 2009-03-28T10:54:23 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 583e87706abc3026960ed759aff6371faf84c211 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -103,7 +103,7 @@ F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627 F src/backup.c 0082d0e5a63f04e88faee0dff0a7d63d3e92a78d F src/bitvec.c 44f7059ac1f874d364b34af31b9617e52223ba75 F src/btmutex.c 341502bc496dc0840dcb00cde65680fb0e85c3ab -F src/btree.c a0095c47e6ff545d5e32cc0cfacc57da977265e0 +F src/btree.c 3aef6704823573386039c608642c9aa78a37bb4e F src/btree.h e302c5747494067cd4f5763000fbe7bca767d816 F src/btreeInt.h df64030d632f8c8ac217ed52e8b6b3eacacb33a5 F src/build.c be2bdaf2a3f6b24ef08dc14b9fd33aa84c689908 @@ -143,7 +143,7 @@ F src/os_common.h 8c61457df58f1a4bd5f5adc3e90e01b37bf7afbc F src/os_os2.c bed77dc26e3a95ce4a204936b9a1ca6fe612fcc5 F src/os_unix.c 7bf3ebde13154a97f797df1551d19cf0d2785c15 F src/os_win.c 40636702058ed4dcd35d68151bfab56d4997cdc1 -F src/pager.c 15eaf3d021eb723eda997fff735894c63d1709ee +F src/pager.c 7a2b4b118708de09e580de66d46e51c1b655f76a F src/pager.h 0c9f3520c00d8a3b8e792ca56c9a11b6b02b4b0f F src/parse.y b9ba0946a13e9f32a96044e64a3e8780269b08b0 F src/pcache.c fcf7738c83c4d3e9d45836b2334c8a368cc41274 @@ -710,7 +710,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P 647e3b156e32e37debd60b0079fc5a52bdc9b8c8 -R 59f8434b3153cd9708c0b0c22d7981e9 +P c9fa329f54736de517cddaf747595c9eca931f32 +R 45685c730f301fd232a550e830ed7088 U danielk1977 -Z 8e990619e4d3491c0996afb496a3e021 +Z 0debd657750e70bfc6e8d14fa070690c diff --git a/manifest.uuid b/manifest.uuid index b7c84e8d22..5d9082648f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c9fa329f54736de517cddaf747595c9eca931f32 \ No newline at end of file +9278f7b1e1f2d0d4c2f8829ca801a769e512c2a6 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index b7da8cdb40..a7e4605ad1 100644 --- a/src/btree.c +++ b/src/btree.c @@ -9,7 +9,7 @@ ** May you share freely, never taking more than you give. ** ************************************************************************* -** $Id: btree.c,v 1.578 2009/03/25 15:43:09 danielk1977 Exp $ +** $Id: btree.c,v 1.579 2009/03/28 10:54:23 danielk1977 Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** See the header comment on "btreeInt.h" for additional information. @@ -4427,8 +4427,15 @@ static int allocateBtreePage( ** at the end of the file instead of one. The first allocated page ** becomes a new pointer-map page, the second is used by the caller. */ + MemPage *pPg = 0; TRACE(("ALLOCATE: %d from end of file (pointer-map page)\n", *pPgno)); assert( *pPgno!=PENDING_BYTE_PAGE(pBt) ); + rc = sqlite3BtreeGetPage(pBt, *pPgno, &pPg, 0); + if( rc==SQLITE_OK ){ + rc = sqlite3PagerWrite(pPg->pDbPage); + releasePage(pPg); + } + if( rc ) return rc; (*pPgno)++; if( *pPgno==PENDING_BYTE_PAGE(pBt) ){ (*pPgno)++; } } diff --git a/src/pager.c b/src/pager.c index 7de1217157..9e2ae675b5 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.574 2009/03/28 06:59:41 danielk1977 Exp $ +** @(#) $Id: pager.c,v 1.575 2009/03/28 10:54:23 danielk1977 Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -3431,11 +3431,9 @@ static int readDbPage(PgHdr *pPg){ memset(pPg->pData, 0, pPager->pageSize); return SQLITE_OK; } - iOffset = (pgno-1)*(i64)pPager->pageSize; rc = sqlite3OsRead(pPager->fd, pPg->pData, pPager->pageSize, iOffset); if( rc==SQLITE_IOERR_SHORT_READ ){ - memset(pPg->pData, 0, pPager->pageSize); rc = SQLITE_OK; } if( pgno==1 ){