From: drh Date: Fri, 20 Jan 2012 15:05:05 +0000 (+0000) Subject: Cherrypick the fix from [629108c8e5376f989] into the nx-devkit branch. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=09a982e4ce3fbd6096ed162641f707a237cbd9ab;p=thirdparty%2Fsqlite.git Cherrypick the fix from [629108c8e5376f989] into the nx-devkit branch. FossilOrigin-Name: d7374568cbce156523f5a6930e473ba2653c758b --- diff --git a/manifest b/manifest index 1619acc614..c2097a3e06 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Cherry-pick\sthe\sfix\sto\ssurplus\soverflow\sfiles\sin\sthe\smultiplexor,\ncheck-in\s[1238619756c0c]\sin\sthe\strunk. -D 2012-01-09T14:57:38.826 +C Cherrypick\sthe\sfix\sfrom\s[629108c8e5376f989]\sinto\sthe\snx-devkit\sbranch. +D 2012-01-20T15:05:05.042 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -168,7 +168,7 @@ F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04 F src/os_os2.c 4a75888ba3dfc820ad5e8177025972d74d7f2440 F src/os_unix.c baad28b27adc563579170b6d765af0b0cc1d98c8 F src/os_win.c 823f55855ceb062d72231409b828d0486f09125f -F src/pager.c 6277bebe07ac45bc99fb912ec105f913be804a83 +F src/pager.c afadbdf1563265756c3d09f2f77f541d6a1cfa73 F src/pager.h 5cd760857707529b403837d813d86b68938d6183 F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58 F src/pcache.c 1fdd77978c1525d1ca4b9ef48eb80abca710cb4c @@ -979,7 +979,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P 42f31f190a0ac971fa0ee361fe4c175f479c75e3 -R 33443288608b606d75feb07d292cfeb5 +P 2f8c62c3378a702fa623a2880a989d958eece0df +R 15df81aa2239c7d8195d068c3097f5bb U drh -Z ff62211e5ddd93259287a913f2fd089b +Z 14b067267cbd9f1c1104b537a1a48842 diff --git a/manifest.uuid b/manifest.uuid index 5c60c15d94..2a6cd805c7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2f8c62c3378a702fa623a2880a989d958eece0df \ No newline at end of file +d7374568cbce156523f5a6930e473ba2653c758b \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index cc1648fb8f..75fdaec615 100644 --- a/src/pager.c +++ b/src/pager.c @@ -2485,7 +2485,7 @@ static int pager_truncate(Pager *pPager, Pgno nPage){ if( rc==SQLITE_OK && currentSize!=newSize ){ if( currentSize>newSize ){ rc = sqlite3OsTruncate(pPager->fd, newSize); - }else{ + }else if( (currentSize+szPage)<=newSize ){ char *pTmp = pPager->pTmpSpace; memset(pTmp, 0, szPage); testcase( (newSize-szPage) < currentSize ); @@ -3074,7 +3074,7 @@ static int pagerPagecount(Pager *pPager, Pgno *pnPage){ return rc; } } - nPage = (Pgno)(n / pPager->pageSize); + nPage = (Pgno)((n+pPager->pageSize-1) / pPager->pageSize); if( nPage==0 && n>0 ){ nPage = 1; } @@ -3504,7 +3504,7 @@ int sqlite3PagerSetPagesize(Pager *pPager, u32 *pPageSize, int nReserve){ if( rc==SQLITE_OK ){ pager_reset(pPager); - pPager->dbSize = (Pgno)(nByte/pageSize); + pPager->dbSize = (Pgno)((nByte+pageSize-1)/pageSize); pPager->pageSize = pageSize; sqlite3PageFree(pPager->pTmpSpace); pPager->pTmpSpace = pNew;