aboutsummaryrefslogtreecommitdiff
path: root/src/pager.c
diff options
context:
space:
mode:
authordanielk1977 <danielk1977@noemail.net>2008-05-09 16:57:50 +0000
committerdanielk1977 <danielk1977@noemail.net>2008-05-09 16:57:50 +0000
commit93f7af97a6b58480acccf78901dfff84ee01cc0d (patch)
treecee40572405b2fc2f2bf632a9482e14205e49fc1 /src/pager.c
parent7297d1f07058da3e3d6693ce4f4ade1f9bbdbcfd (diff)
downloadsqlite-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.c12
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