diff options
Diffstat (limited to 'src/btree.c')
-rw-r--r-- | src/btree.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/btree.c b/src/btree.c index 375d89189..1085bcc72 100644 --- a/src/btree.c +++ b/src/btree.c @@ -7550,13 +7550,17 @@ static int balance_nonroot( pgno = get4byte(pRight); while( 1 ){ rc = getAndInitPage(pBt, pgno, &apOld[i], 0, 0); - if( rc==0 && apOld[i]->nFree<0 ){ - rc = btreeComputeFreeSpace(apOld[i]); - } if( rc ){ memset(apOld, 0, (i+1)*sizeof(MemPage*)); goto balance_cleanup; } + if( apOld[i]->nFree<0 ){ + rc = btreeComputeFreeSpace(apOld[i]); + if( rc ){ + memset(apOld, 0, (i)*sizeof(MemPage*)); + goto balance_cleanup; + } + } nMaxCells += 1+apOld[i]->nCell+apOld[i]->nOverflow; if( (i--)==0 ) break; |