diff options
Diffstat (limited to 'src/btree.c')
-rw-r--r-- | src/btree.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/btree.c b/src/btree.c index 23af2570c..7dd714ea3 100644 --- a/src/btree.c +++ b/src/btree.c @@ -1440,9 +1440,14 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){ ** then the cell content offset of an empty page wants to be 65536. ** However, that integer is too large to be stored in a 2-byte unsigned ** integer, so a value of 0 is used in its place. */ - top = get2byteNotZero(&data[hdr+5]); - if( gap>top || (u32)top>pPage->pBt->usableSize ){ - return SQLITE_CORRUPT_BKPT; + top = get2byte(&data[hdr+5]); + assert( top<=pPage->pBt->usableSize ); /* Prevent by getAndInitPage() */ + if( gap>top ){ + if( top==0 && pPage->pBt->usableSize==65536 ){ + top = 65536; + }else{ + return SQLITE_CORRUPT_BKPT; + } } /* If there is enough space between gap and top for one more cell pointer |