diff options
author | danielk1977 <danielk1977@noemail.net> | 2008-05-09 16:57:50 +0000 |
---|---|---|
committer | danielk1977 <danielk1977@noemail.net> | 2008-05-09 16:57:50 +0000 |
commit | 93f7af97a6b58480acccf78901dfff84ee01cc0d (patch) | |
tree | cee40572405b2fc2f2bf632a9482e14205e49fc1 /src/pager.c | |
parent | 7297d1f07058da3e3d6693ce4f4ade1f9bbdbcfd (diff) | |
download | sqlite-93f7af97a6b58480acccf78901dfff84ee01cc0d.tar.gz sqlite-93f7af97a6b58480acccf78901dfff84ee01cc0d.zip |
Fix a problem with recovering from an IO error in exclusive-locking mode. (CVS 5112)
FossilOrigin-Name: 7a44fb965b3477fb78901939ba35d569e5638c19
Diffstat (limited to 'src/pager.c')
-rw-r--r-- | src/pager.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/pager.c b/src/pager.c index e99e60a53..75f069de6 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.443 2008/05/07 19:11:03 danielk1977 Exp $ +** @(#) $Id: pager.c,v 1.444 2008/05/09 16:57:51 danielk1977 Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -1397,9 +1397,11 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){ pPager->stmtOpen = 0; } if( pPager->journalOpen ){ - if( (pPager->exclusiveMode || - pPager->journalMode==PAGER_JOURNALMODE_PERSIST) - && (rc = zeroJournalHdr(pPager, hasMaster))==SQLITE_OK ){ + if( pPager->exclusiveMode + || pPager->journalMode==PAGER_JOURNALMODE_PERSIST + ){ + rc = zeroJournalHdr(pPager, hasMaster); + pager_error(pPager, rc); pPager->journalOff = 0; pPager->journalStarted = 0; }else{ @@ -3412,8 +3414,8 @@ static int pagerSharedLock(Pager *pPager){ if( pPager->journalOpen ){ isHot = 1; } - pager_reset(pPager); pPager->errCode = SQLITE_OK; + pager_reset(pPager); } /* If the pager is still in an error state, do not proceed. The error |