From: dan Date: Fri, 30 Oct 2015 14:28:16 +0000 (+0000) Subject: Return immediately if sqlite3PagerWrite() is called when the pager is in PAGER_ERROR... X-Git-Tag: version-3.10.0~183^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fcacheflush;p=thirdparty%2Fsqlite.git Return immediately if sqlite3PagerWrite() is called when the pager is in PAGER_ERROR state. FossilOrigin-Name: a6695b008487aeb7badf572fa32bfcba3c9fab03 --- diff --git a/manifest b/manifest index 2da7a2f9cb..0497ff0353 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Test\sthat\scalling\ssqlite3_db_cacheflush()\sdoes\snot\sinterfere\swith\ssavepoints. -D 2015-10-30T09:13:29.814 +C Return\simmediately\sif\ssqlite3PagerWrite()\sis\scalled\swhen\sthe\spager\sis\sin\sPAGER_ERROR\sstate. +D 2015-10-30T14:28:16.049 F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 702d3e98f3afc6587a78481257f3c4c900efc3a4 @@ -327,7 +327,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa F src/os_unix.c fc93d55f96bb978f0b0168c6ea7d6fc60b0e172c F src/os_win.c 1716291e5ec2dbfc5a1fe0b32182030f1f7d8acf F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca -F src/pager.c b588107ee55ff4121c114949ff51a56aab21f3ac +F src/pager.c 9c1eec0d88133484b165fa0b5284a411c24b964c F src/pager.h 1c4fa826c330040c5659a384446c7cc6e8e4200c F src/parse.y 11078cd8e3af00f030505b6a86a06a4536cfdeaa F src/pcache.c 24be750c79272e0ca7b6e007bc94999700f3e5ef @@ -1397,7 +1397,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 9b79a390440a23542a370b591e567b31ebb35c42 -R b3b377e425858b0fc40d0f4a8e28ca4d +P 0e09e4a26938cfe0f573449526a8f0f527cef921 +R f396f7a1d6ed17b52257ec59a2b63902 U dan -Z 2687c0f7a67bbeeb26b2f80bb787cd41 +Z 76885908163af131d9fcc88a11feb178 diff --git a/manifest.uuid b/manifest.uuid index 6b4639c096..07944153ac 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0e09e4a26938cfe0f573449526a8f0f527cef921 \ No newline at end of file +a6695b008487aeb7badf572fa32bfcba3c9fab03 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index ea867127e0..314f792aa0 100644 --- a/src/pager.c +++ b/src/pager.c @@ -5915,9 +5915,10 @@ int sqlite3PagerWrite(PgHdr *pPg){ Pager *pPager = pPg->pPager; assert( (pPg->flags & PGHDR_MMAP)==0 ); assert( pPager->eState>=PAGER_WRITER_LOCKED ); - assert( pPager->eState!=PAGER_ERROR ); assert( assert_pager_state(pPager) ); - if( (pPg->flags & PGHDR_WRITEABLE)!=0 && pPager->dbSize>=pPg->pgno ){ + if( pPager->errCode ){ + return pPager->errCode; + }else if( (pPg->flags & PGHDR_WRITEABLE)!=0 && pPager->dbSize>=pPg->pgno ){ if( pPager->nSavepoint ) return subjournalPageIfRequired(pPg); return SQLITE_OK; }else if( pPager->sectorSize > (u32)pPager->pageSize ){