diff options
Diffstat (limited to 'src/btree.c')
-rw-r--r-- | src/btree.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/btree.c b/src/btree.c index 0e1f7a2dc..961de0ea4 100644 --- a/src/btree.c +++ b/src/btree.c @@ -2856,19 +2856,17 @@ int sqlite3BtreeSetPagerFlags( */ int sqlite3BtreeSetPageSize(Btree *p, int pageSize, int nReserve, int iFix){ int rc = SQLITE_OK; + int x; BtShared *pBt = p->pBt; - assert( nReserve>=-1 && nReserve<=254 ); + assert( nReserve>=0 && nReserve<=255 ); sqlite3BtreeEnter(p); - if( nReserve>=0 ){ - pBt->nReserveWanted = nReserve + 1; - } + pBt->nReserveWanted = nReserve; + x = pBt->pageSize - pBt->usableSize; + if( nReserve<x ) nReserve = x; if( pBt->btsFlags & BTS_PAGESIZE_FIXED ){ sqlite3BtreeLeave(p); return SQLITE_READONLY; } - if( nReserve<0 ){ - nReserve = pBt->pageSize - pBt->usableSize; - } assert( nReserve>=0 && nReserve<=255 ); if( pageSize>=512 && pageSize<=SQLITE_MAX_PAGE_SIZE && ((pageSize-1)&pageSize)==0 ){ @@ -2919,12 +2917,12 @@ int sqlite3BtreeGetReserveNoMutex(Btree *p){ ** The amount of reserve can only grow - never shrink. */ int sqlite3BtreeGetRequestedReserve(Btree *p){ - int n; + int n1, n2; sqlite3BtreeEnter(p); - n = ((int)p->pBt->nReserveWanted) - 1; - if( n<0 ) n = sqlite3BtreeGetReserveNoMutex(p); + n1 = (int)p->pBt->nReserveWanted; + n2 = sqlite3BtreeGetReserveNoMutex(p); sqlite3BtreeLeave(p); - return n; + return n1>n2 ? n1 : n2; } |