summaryrefslogtreecommitdiff
path: root/db/btree
diff options
context:
space:
mode:
Diffstat (limited to 'db/btree')
-rw-r--r--db/btree/bt_split.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/db/btree/bt_split.c b/db/btree/bt_split.c
index d01db4ad9d..4951fcb096 100644
--- a/db/btree/bt_split.c
+++ b/db/btree/bt_split.c
@@ -674,7 +674,8 @@ bt_psplit(t, h, l, r, pskip, ilen)
* where we decide to try and copy too much onto the left page.
* Make sure that doesn't happen.
*/
- if (skip <= off && used + nbytes >= full) {
+ if (skip <= off &&
+ used + nbytes + sizeof(indx_t) >= full || nxt == top - 1) {
--off;
break;
}
@@ -687,7 +688,7 @@ bt_psplit(t, h, l, r, pskip, ilen)
memmove((char *)l + l->upper, src, nbytes);
}
- used += nbytes;
+ sed += nbytes + sizeof(indx_t);
if (used >= half) {
if (!isbigkey || bigkeycnt == 3)
break;