diff options
author | drh <drh@noemail.net> | 2015-06-25 15:04:56 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-06-25 15:04:56 +0000 |
commit | ded340e4fc3a04223c98bd54d907cf712441ffbe (patch) | |
tree | 41339150263dfd9dfcd58cb27dd47609eecc1a02 /src | |
parent | 6918095d816d8e0eef2d3db520c1e49348020634 (diff) | |
download | sqlite-ded340e4fc3a04223c98bd54d907cf712441ffbe.tar.gz sqlite-ded340e4fc3a04223c98bd54d907cf712441ffbe.zip |
Minor optimization to allocateSpace().
FossilOrigin-Name: d007bc339b9ea6d59a3dd2b0c5e77e9c801b16f6
Diffstat (limited to 'src')
-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 |