about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan S <gereeter+code@gmail.com>2016-01-19 21:07:36 -0600
committerJonathan S <gereeter+code@gmail.com>2016-01-19 21:07:36 -0600
commit707afa2ed56fa9fb10a9c8b21970c17848a7a174 (patch)
treeb7c9f8e04e90b48057cfd167e852aaea37b7d8cb
parentbff52927f582e2ca8dea799bd58f06e654295e21 (diff)
downloadrust-707afa2ed56fa9fb10a9c8b21970c17848a7a174.tar.gz
rust-707afa2ed56fa9fb10a9c8b21970c17848a7a174.zip
In BTreeMap's merge function, adjust the length of the node before moving elements into it.
-rw-r--r--src/libcollections/btree/node.rs4
1 files 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<NodeRef<marker::Mut<'a>, 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<NodeRef<marker::Mut<'a>, K, V, marker::Internal>, marker::
                 );
             }
 
-            left_node.as_leaf_mut().len += right_len as u16 + 1;
-
             Handle::new_edge(self.node, self.idx)
         }
     }