diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backup.c | 10 | ||||
-rw-r--r-- | src/btree.c | 11 | ||||
-rw-r--r-- | src/pager.c | 14 | ||||
-rw-r--r-- | src/where.c | 4 |
4 files changed, 20 insertions, 19 deletions
diff --git a/src/backup.c b/src/backup.c index 340c93504..8d77fded6 100644 --- a/src/backup.c +++ b/src/backup.c @@ -12,7 +12,7 @@ ** This file contains the implementation of the sqlite3_backup_XXX() ** API functions and the related features. ** -** $Id: backup.c,v 1.4 2009/02/03 22:51:06 drh Exp $ +** $Id: backup.c,v 1.5 2009/02/04 01:49:30 shane Exp $ */ #include "sqliteInt.h" #include "btreeInt.h" @@ -260,7 +260,7 @@ int sqlite3_backup_step(sqlite3_backup *p, int nPage){ Pager * const pSrcPager = sqlite3BtreePager(p->pSrc); /* Source pager */ Pager * const pDestPager = sqlite3BtreePager(p->pDest); /* Dest pager */ int ii; /* Iterator variable */ - int nSrcPage; /* Size of source db in pages */ + int nSrcPage = -1; /* Size of source db in pages */ int bCloseTrans = 0; /* True if src db requires unlocking */ /* If the source pager is currently in a write-transaction, return @@ -293,7 +293,7 @@ int sqlite3_backup_step(sqlite3_backup *p, int nPage){ if( rc==SQLITE_OK ){ rc = sqlite3PagerPagecount(pSrcPager, &nSrcPage); } - for(ii=0; ii<nPage && p->iNext<=nSrcPage && rc==SQLITE_OK; ii++){ + for(ii=0; ii<nPage && p->iNext<=(Pgno)nSrcPage && rc==SQLITE_OK; ii++){ const Pgno iSrcPg = p->iNext; /* Source page number */ if( iSrcPg!=PENDING_BYTE_PAGE(p->pSrc->pBt) ){ DbPage *pSrcPg; /* Source page object */ @@ -308,7 +308,7 @@ int sqlite3_backup_step(sqlite3_backup *p, int nPage){ if( rc==SQLITE_OK ){ p->nPagecount = nSrcPage; p->nRemaining = nSrcPage+1-p->iNext; - if( p->iNext>nSrcPage ){ + if( p->iNext>(Pgno)nSrcPage ){ rc = SQLITE_DONE; } } @@ -375,7 +375,7 @@ int sqlite3_backup_step(sqlite3_backup *p, int nPage){ iOff+=nSrcPagesize ){ PgHdr *pSrcPg = 0; - const Pgno iSrcPg = (iOff/nSrcPagesize)+1; + const Pgno iSrcPg = (Pgno)((iOff/nSrcPagesize)+1); rc = sqlite3PagerGet(pSrcPager, iSrcPg, &pSrcPg); if( rc==SQLITE_OK ){ u8 *zData = sqlite3PagerGetData(pSrcPg); diff --git a/src/btree.c b/src/btree.c index b4a70bd97..c4bb5346a 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.564 2009/02/03 16:51:25 danielk1977 Exp $ +** $Id: btree.c,v 1.565 2009/02/04 01:49:30 shane Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** See the header comment on "btreeInt.h" for additional information. @@ -4538,8 +4538,8 @@ static int freePage2(BtShared *pBt, MemPage *pMemPage, Pgno iPage){ ** first trunk in the free-list is full. Either way, the page being freed ** will become the new first trunk page in the free-list. */ - if( (!pPage && (rc = sqlite3BtreeGetPage(pBt, iPage, &pPage, 0))) - || (rc = sqlite3PagerWrite(pPage->pDbPage)) + if( ((!pPage) && (0 != (rc = sqlite3BtreeGetPage(pBt, iPage, &pPage, 0)))) + || (0 != (rc = sqlite3PagerWrite(pPage->pDbPage))) ){ goto freepage_out; } @@ -4569,7 +4569,7 @@ static int clearCell(MemPage *pPage, unsigned char *pCell){ Pgno ovflPgno; int rc; int nOvfl; - int ovflPageSize; + u16 ovflPageSize; assert( sqlite3_mutex_held(pPage->pBt->mutex) ); sqlite3BtreeParseCellPtr(pPage, pCell, &info); @@ -4577,11 +4577,12 @@ static int clearCell(MemPage *pPage, unsigned char *pCell){ return SQLITE_OK; /* No overflow pages. Return without doing anything */ } ovflPgno = get4byte(&pCell[info.iOverflow]); + assert( pBt->usableSize > 4 ); ovflPageSize = pBt->usableSize - 4; nOvfl = (info.nPayload - info.nLocal + ovflPageSize - 1)/ovflPageSize; assert( ovflPgno==0 || nOvfl>0 ); while( nOvfl-- ){ - Pgno iNext; + Pgno iNext = 0; MemPage *pOvfl = 0; if( ovflPgno==0 || ovflPgno>pagerPagecount(pBt) ){ return SQLITE_CORRUPT_BKPT; diff --git a/src/pager.c b/src/pager.c index 302a036ad..e26a40268 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.563 2009/02/03 22:51:06 drh Exp $ +** @(#) $Id: pager.c,v 1.564 2009/02/04 01:49:30 shane Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -993,11 +993,11 @@ static int writeMasterJournal(Pager *pPager, const char *zMaster){ /* Write the master journal data to the end of the journal file. If ** an error occurs, return the error code to the caller. */ - if( (rc = write32bits(pPager->jfd, iHdrOff, PAGER_MJ_PGNO(pPager))) - || (rc = sqlite3OsWrite(pPager->jfd, zMaster, nMaster, iHdrOff+4)) - || (rc = write32bits(pPager->jfd, iHdrOff+4+nMaster, nMaster)) - || (rc = write32bits(pPager->jfd, iHdrOff+4+nMaster+4, cksum)) - || (rc = sqlite3OsWrite(pPager->jfd, aJournalMagic, 8, iHdrOff+4+nMaster+8)) + if( (0 != (rc = write32bits(pPager->jfd, iHdrOff, PAGER_MJ_PGNO(pPager)))) + || (0 != (rc = sqlite3OsWrite(pPager->jfd, zMaster, nMaster, iHdrOff+4))) + || (0 != (rc = write32bits(pPager->jfd, iHdrOff+4+nMaster, nMaster))) + || (0 != (rc = write32bits(pPager->jfd, iHdrOff+4+nMaster+4, cksum))) + || (0 != (rc = sqlite3OsWrite(pPager->jfd, aJournalMagic, 8, iHdrOff+4+nMaster+8))) ){ return rc; } @@ -2512,7 +2512,7 @@ int sqlite3PagerPagecount(Pager *pPager, int *pnPage){ i64 n = 0; /* File size in bytes returned by OsFileSize() */ assert( isOpen(pPager->fd) || pPager->tempFile ); - if( isOpen(pPager->fd) && (rc = sqlite3OsFileSize(pPager->fd, &n)) ){ + if( isOpen(pPager->fd) && (0 != (rc = sqlite3OsFileSize(pPager->fd, &n))) ){ pager_error(pPager, rc); return rc; } diff --git a/src/where.c b/src/where.c index d162b366d..5f10b81b0 100644 --- a/src/where.c +++ b/src/where.c @@ -16,7 +16,7 @@ ** so is applicable. Because this module is responsible for selecting ** indices, you might also think of this module as the "query optimizer". ** -** $Id: where.c,v 1.366 2009/01/30 05:40:27 shane Exp $ +** $Id: where.c,v 1.367 2009/02/04 01:49:30 shane Exp $ */ #include "sqliteInt.h" @@ -888,7 +888,7 @@ static void exprAnalyzeOrTerm( if( chngToIN ){ int okToChngToIN = 0; /* True if the conversion to IN is valid */ int iColumn = -1; /* Column index on lhs of IN operator */ - int iCursor; /* Table cursor common to all terms */ + int iCursor = -1; /* Table cursor common to all terms */ int j = 0; /* Loop counter */ /* Search for a table and column that appears on one side or the |