@@ -861,17 +861,14 @@ impl<'a, K, V> Handle<NodeRef<marker::Mut<'a>, K, V, marker::Leaf>, marker::Edge
861
861
let kv = unsafe { Handle :: new_kv ( self . node , self . idx ) } ;
862
862
( InsertResult :: Fit ( kv) , ptr)
863
863
} else {
864
- let middle = unsafe { Handle :: new_kv ( self . node , B ) } ;
864
+ let middle = unsafe { Handle :: new_kv ( self . node , B - 1 ) } ;
865
865
let ( mut left, k, v, mut right) = middle. split ( ) ;
866
- let ptr = if self . idx <= B {
866
+ let ptr = if self . idx < B {
867
867
unsafe { Handle :: new_edge ( left. reborrow_mut ( ) , self . idx ) . insert_fit ( key, val) }
868
868
} else {
869
869
unsafe {
870
- Handle :: new_edge (
871
- right. as_mut ( ) . cast_unchecked :: < marker:: Leaf > ( ) ,
872
- self . idx - ( B + 1 ) ,
873
- )
874
- . insert_fit ( key, val)
870
+ Handle :: new_edge ( right. as_mut ( ) . cast_unchecked :: < marker:: Leaf > ( ) , self . idx - B )
871
+ . insert_fit ( key, val)
875
872
}
876
873
} ;
877
874
( InsertResult :: Split ( SplitResult { left : left. forget_type ( ) , k, v, right } ) , ptr)
@@ -934,17 +931,17 @@ impl<'a, K, V> Handle<NodeRef<marker::Mut<'a>, K, V, marker::Internal>, marker::
934
931
let kv = unsafe { Handle :: new_kv ( self . node , self . idx ) } ;
935
932
InsertResult :: Fit ( kv)
936
933
} else {
937
- let middle = unsafe { Handle :: new_kv ( self . node , B ) } ;
934
+ let middle = unsafe { Handle :: new_kv ( self . node , B - 1 ) } ;
938
935
let ( mut left, k, v, mut right) = middle. split ( ) ;
939
- if self . idx <= B {
936
+ if self . idx < B {
940
937
unsafe {
941
938
Handle :: new_edge ( left. reborrow_mut ( ) , self . idx ) . insert_fit ( key, val, edge) ;
942
939
}
943
940
} else {
944
941
unsafe {
945
942
Handle :: new_edge (
946
943
right. as_mut ( ) . cast_unchecked :: < marker:: Internal > ( ) ,
947
- self . idx - ( B + 1 ) ,
944
+ self . idx - B ,
948
945
)
949
946
. insert_fit ( key, val, edge) ;
950
947
}
0 commit comments