From 707afa2ed56fa9fb10a9c8b21970c17848a7a174 Mon Sep 17 00:00:00 2001 From: Jonathan S Date: Tue, 19 Jan 2016 21:07:36 -0600 Subject: [PATCH] In BTreeMap's merge function, adjust the length of the node before moving elements into it. --- src/libcollections/btree/node.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcollections/btree/node.rs b/src/libcollections/btree/node.rs index 2e2a39df347..62e85cb64a1 100644 --- a/src/libcollections/btree/node.rs +++ b/src/libcollections/btree/node.rs @@ -1022,6 +1022,8 @@ impl<'a, K, V> Handle, K, V, marker::Internal>, marker:: } self.node.as_leaf_mut().len -= 1; + left_node.as_leaf_mut().len += right_len as u16 + 1; + if self.node.height > 1 { ptr::copy_nonoverlapping( right_node.cast_unchecked().as_internal().edges.as_ptr(), @@ -1053,8 +1055,6 @@ impl<'a, K, V> Handle, K, V, marker::Internal>, marker:: ); } - left_node.as_leaf_mut().len += right_len as u16 + 1; - Handle::new_edge(self.node, self.idx) } }