summary refs log tree commit diff
path: root/db/btree/bt_split.c
diff options
context:
space:
mode:
Diffstat (limited to 'db/btree/bt_split.c')
-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;