@@ -220,25 +220,14 @@ impl<T> Ptr<T> {
220220 pub fn delete ( & self ) {
221221 match & self . kind {
222222 PtrKind :: HeapSingle ( weak) => {
223- assert_eq ! ( self . offset, 0 , "ub: invalid delete" ) ;
224223 assert_eq ! ( Weak :: strong_count( weak) , 1 , "ub: invalid delete" ) ;
225224 unsafe {
226225 let strong = weak. upgrade ( ) . expect ( "ub: dangling pointer" ) ;
227226 Rc :: from_raw ( Rc :: as_ptr ( & strong) ) ;
228227 }
229228 assert_eq ! ( Weak :: strong_count( weak) , 0 , "ub: double free" ) ;
230229 }
231- PtrKind :: Reinterpreted ( data) => data. alloc . delete ( ) ,
232- PtrKind :: Null => { }
233- _ => panic ! ( "ub: invalid delete" ) ,
234- }
235- }
236-
237- #[ inline]
238- pub fn delete_array ( & self ) {
239- match & self . kind {
240230 PtrKind :: HeapArray ( weak) => {
241- assert_eq ! ( self . offset, 0 , "ub: invalid delete" ) ;
242231 assert_eq ! ( Weak :: strong_count( weak) , 1 , "ub: invalid delete" ) ;
243232 unsafe {
244233 let strong = weak. upgrade ( ) . expect ( "ub: dangling pointer" ) ;
@@ -247,7 +236,6 @@ impl<T> Ptr<T> {
247236 assert_eq ! ( Weak :: strong_count( weak) , 0 , "ub: double free" ) ;
248237 }
249238 PtrKind :: HeapVec ( weak) => {
250- assert_eq ! ( self . offset, 0 , "ub: invalid delete" ) ;
251239 assert_eq ! ( Weak :: strong_count( weak) , 1 , "ub: invalid delete" ) ;
252240 unsafe {
253241 let strong = weak. upgrade ( ) . expect ( "ub: dangling pointer" ) ;
@@ -1025,31 +1013,31 @@ mod tests {
10251013 let p: Ptr < Vec < i32 > > = Ptr :: alloc ( vec ! [ 1 , 2 , 3 ] ) ;
10261014 let q = p. decay ( ) ;
10271015 assert_eq ! ( q. offset( 2 ) . read( ) , 3 ) ;
1028- q. delete_array ( ) ;
1016+ q. delete ( ) ;
10291017 }
10301018
10311019 #[ test]
10321020 fn decay_heap_array_can_be_freed ( ) {
10331021 let p: Ptr < Box < [ i32 ] > > = Ptr :: alloc ( vec ! [ 1 , 2 , 3 ] . into_boxed_slice ( ) ) ;
10341022 let q = p. decay ( ) ;
10351023 assert_eq ! ( q. offset( 2 ) . read( ) , 3 ) ;
1036- q. delete_array ( ) ;
1024+ q. delete ( ) ;
10371025 }
10381026
10391027 #[ test]
10401028 #[ should_panic( expected = "ub: invalid delete" ) ]
10411029 fn decay_stack_vec_cannot_be_freed ( ) {
10421030 let v: Value < Vec < i32 > > = Rc :: new ( RefCell :: new ( vec ! [ 1 , 2 , 3 ] ) ) ;
10431031 let p: Ptr < Vec < i32 > > = v. as_pointer ( ) ;
1044- p. decay ( ) . delete_array ( ) ;
1032+ p. decay ( ) . delete ( ) ;
10451033 }
10461034
10471035 #[ test]
10481036 #[ should_panic( expected = "ub: invalid delete" ) ]
10491037 fn decay_stack_array_cannot_be_freed ( ) {
10501038 let v: Value < Box < [ i32 ] > > = Rc :: new ( RefCell :: new ( vec ! [ 1 , 2 , 3 ] . into_boxed_slice ( ) ) ) ;
10511039 let p: Ptr < Box < [ i32 ] > > = ( & v as & dyn AsPointer < Box < [ i32 ] > > ) . as_pointer ( ) ;
1052- p. decay ( ) . delete_array ( ) ;
1040+ p. decay ( ) . delete ( ) ;
10531041 }
10541042
10551043 #[ test]
0 commit comments