@@ -127,10 +127,6 @@ impl<K, V> BoxedNode<K, V> {
127127 BoxedNode { ptr : Unique :: from ( & mut Box :: leak ( node) . data ) }
128128 }
129129
130- unsafe fn from_ptr ( ptr : NonNull < LeafNode < K , V > > ) -> Self {
131- BoxedNode { ptr : unsafe { Unique :: new_unchecked ( ptr. as_ptr ( ) ) } }
132- }
133-
134130 fn as_ptr ( & self ) -> NonNull < LeafNode < K , V > > {
135131 NonNull :: from ( self . ptr )
136132 }
@@ -198,7 +194,7 @@ impl<K, V> Root<K, V> {
198194 /// and is the opposite of `pop_internal_level`.
199195 pub fn push_internal_level ( & mut self ) -> NodeRef < marker:: Mut < ' _ > , K , V , marker:: Internal > {
200196 let mut new_node = Box :: new ( unsafe { InternalNode :: new ( ) } ) ;
201- new_node. edges [ 0 ] . write ( unsafe { BoxedNode :: from_ptr ( self . node . as_ptr ( ) ) } ) ;
197+ new_node. edges [ 0 ] . write ( unsafe { ptr :: read ( & mut self . node ) } ) ;
202198
203199 self . node = BoxedNode :: from_internal ( new_node) ;
204200 self . height += 1 ;
@@ -224,8 +220,8 @@ impl<K, V> Root<K, V> {
224220
225221 let top = self . node . ptr ;
226222
227- let internal_node = unsafe { self . internal_node_as_mut ( ) } ;
228- self . node = unsafe { BoxedNode :: from_ptr ( internal_node. first_edge ( ) . descend ( ) . node ) } ;
223+ let mut internal_node = unsafe { self . internal_node_as_mut ( ) } ;
224+ self . node = unsafe { internal_node. as_internal_mut ( ) . edges [ 0 ] . assume_init_read ( ) } ;
229225 self . height -= 1 ;
230226 self . node_as_mut ( ) . as_leaf_mut ( ) . parent = None ;
231227
0 commit comments