aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-05-03 12:57:48 +0000
committerdrh <drh@noemail.net>2018-05-03 12:57:48 +0000
commit9b03192e15b45ac1d448b958be6d35d1ea9cf9ff (patch)
treedda5e0c726ead12d40c72ca210c2b2716ae2a588 /src
parent3de5d16cf7df698599136d4a6695c97dbb603c2d (diff)
downloadsqlite-9b03192e15b45ac1d448b958be6d35d1ea9cf9ff.tar.gz
sqlite-9b03192e15b45ac1d448b958be6d35d1ea9cf9ff.zip
Bug fixes in the overwrite optimization.
FossilOrigin-Name: 0cb6cd2a6a596afaa1cca6c5f5abc2ea75d04f254c7debaf36ecd6a90b66aed6
Diffstat (limited to 'src')
-rw-r--r--src/btree.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/btree.c b/src/btree.c
index 0a8c17221..e920d8902 100644
--- a/src/btree.c
+++ b/src/btree.c
@@ -8215,12 +8215,12 @@ static int btreeOverwriteCell(BtCursor *pCur, const BtreePayload *pX){
do{
rc = btreeGetPage(pBt, ovflPgno, &pPage, 0);
if( rc ) return rc;
- if( iOffset+ovflPageSize>nTotal ){
- ovflPgno = get4byte(pPage->aData + ovflPageSize);
+ if( iOffset+ovflPageSize<nTotal ){
+ ovflPgno = get4byte(pPage->aData);
}else{
ovflPageSize = nTotal - iOffset;
}
- rc = btreeOverwriteContent(pPage, pPage->aData, pX,
+ rc = btreeOverwriteContent(pPage, pPage->aData+4, pX,
iOffset, ovflPageSize);
if( rc ) return rc;
iOffset += ovflPageSize;