File tree Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Original file line number Diff line number Diff line change @@ -1078,12 +1078,21 @@ fn test_from_iter_specialization_panic_during_drop_leaks() {
1078
1078
}
1079
1079
}
1080
1080
1081
+ let mut to_free: * mut Droppable = core:: ptr:: null_mut ( ) ;
1082
+ let mut cap = 0 ;
1083
+
1081
1084
let _ = std:: panic:: catch_unwind ( AssertUnwindSafe ( || {
1082
- let v = vec ! [ Droppable :: DroppedTwice ( Box :: new( 123 ) ) , Droppable :: PanicOnDrop ] ;
1085
+ let mut v = vec ! [ Droppable :: DroppedTwice ( Box :: new( 123 ) ) , Droppable :: PanicOnDrop ] ;
1086
+ to_free = v. as_mut_ptr ( ) ;
1087
+ cap = v. capacity ( ) ;
1083
1088
let _ = v. into_iter ( ) . take ( 0 ) . collect :: < Vec < _ > > ( ) ;
1084
1089
} ) ) ;
1085
1090
1086
1091
assert_eq ! ( unsafe { DROP_COUNTER } , 1 ) ;
1092
+ // clean up the leak to keep miri happy
1093
+ unsafe {
1094
+ drop ( Vec :: from_raw_parts ( to_free, 0 , cap) ) ;
1095
+ }
1087
1096
}
1088
1097
1089
1098
#[ test]
You can’t perform that action at this time.
0 commit comments