Rollup merge of #83827 - the8472:fix-inplace-panic-on-drop, r=RalfJung
cleanup leak after test to make miri happy Contains changes that were requested in #83629 but didn't make it into the rollup. r? `````@RalfJung`````
This commit is contained in:
commit
b943ea8cdc
@ -1078,12 +1078,21 @@ fn test_from_iter_specialization_panic_during_drop_leaks() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut to_free: *mut Droppable = core::ptr::null_mut();
|
||||||
|
let mut cap = 0;
|
||||||
|
|
||||||
let _ = std::panic::catch_unwind(AssertUnwindSafe(|| {
|
let _ = std::panic::catch_unwind(AssertUnwindSafe(|| {
|
||||||
let v = vec![Droppable::DroppedTwice(Box::new(123)), Droppable::PanicOnDrop];
|
let mut v = vec![Droppable::DroppedTwice(Box::new(123)), Droppable::PanicOnDrop];
|
||||||
|
to_free = v.as_mut_ptr();
|
||||||
|
cap = v.capacity();
|
||||||
let _ = v.into_iter().take(0).collect::<Vec<_>>();
|
let _ = v.into_iter().take(0).collect::<Vec<_>>();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
assert_eq!(unsafe { DROP_COUNTER }, 1);
|
assert_eq!(unsafe { DROP_COUNTER }, 1);
|
||||||
|
// clean up the leak to keep miri happy
|
||||||
|
unsafe {
|
||||||
|
drop(Vec::from_raw_parts(to_free, 0, cap));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user