@@ -128,10 +128,6 @@ impl<K, V> BoxedNode<K, V> {
128128 BoxedNode { ptr : Unique :: from ( & mut Box :: leak ( node) . data ) }
129129 }
130130
131- unsafe fn from_ptr ( ptr : NonNull < LeafNode < K , V > > ) -> Self {
132- BoxedNode { ptr : unsafe { Unique :: new_unchecked ( ptr. as_ptr ( ) ) } }
133- }
134-
135131 fn as_ptr ( & self ) -> NonNull < LeafNode < K , V > > {
136132 NonNull :: from ( self . ptr )
137133 }
@@ -199,7 +195,7 @@ impl<K, V> Root<K, V> {
199195 /// and is the opposite of `pop_internal_level`.
200196 pub fn push_internal_level ( & mut self ) -> NodeRef < marker:: Mut < ' _ > , K , V , marker:: Internal > {
201197 let mut new_node = Box :: new ( unsafe { InternalNode :: new ( ) } ) ;
202- new_node. edges [ 0 ] . write ( unsafe { BoxedNode :: from_ptr ( self . node . as_ptr ( ) ) } ) ;
198+ new_node. edges [ 0 ] . write ( unsafe { ptr :: read ( & mut self . node ) } ) ;
203199
204200 self . node = BoxedNode :: from_internal ( new_node) ;
205201 self . height += 1 ;
@@ -225,8 +221,8 @@ impl<K, V> Root<K, V> {
225221
226222 let top = self . node . ptr ;
227223
228- let internal_node = unsafe { self . internal_node_as_mut ( ) } ;
229- self . node = unsafe { BoxedNode :: from_ptr ( internal_node. first_edge ( ) . descend ( ) . node ) } ;
224+ let mut internal_node = unsafe { self . internal_node_as_mut ( ) } ;
225+ self . node = unsafe { internal_node. as_internal_mut ( ) . edges [ 0 ] . assume_init_read ( ) } ;
230226 self . height -= 1 ;
231227 self . node_as_mut ( ) . as_leaf_mut ( ) . parent = None ;
232228
0 commit comments