diff options
| author | Jonathan S <gereeter+code@gmail.com> | 2016-01-19 21:07:36 -0600 |
|---|---|---|
| committer | Jonathan S <gereeter+code@gmail.com> | 2016-01-19 21:07:36 -0600 |
| commit | 707afa2ed56fa9fb10a9c8b21970c17848a7a174 (patch) | |
| tree | b7c9f8e04e90b48057cfd167e852aaea37b7d8cb | |
| parent | bff52927f582e2ca8dea799bd58f06e654295e21 (diff) | |
| download | rust-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.rs | 4 |
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) } } |
