mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
Auto merge of #80123 - DrMeepster:maybe_uninit_write_slice, r=RalfJung
Fix memory leak in test "mem::uninit_write_slice_cloned_no_drop" This fixes #80116. I replaced the `Rc` based method I was using with a type that panics when dropped.
This commit is contained in:
commit
59aaa2a04b
@ -1,5 +1,6 @@
|
||||
use core::mem::*;
|
||||
|
||||
#[cfg(panic = "unwind")]
|
||||
use std::rc::Rc;
|
||||
|
||||
#[test]
|
||||
@ -250,14 +251,19 @@ fn uninit_write_slice_cloned_mid_panic() {
|
||||
|
||||
#[test]
|
||||
fn uninit_write_slice_cloned_no_drop() {
|
||||
let rc = Rc::new(());
|
||||
#[derive(Clone)]
|
||||
struct Bomb;
|
||||
|
||||
impl Drop for Bomb {
|
||||
fn drop(&mut self) {
|
||||
panic!("dropped a bomb! kaboom")
|
||||
}
|
||||
}
|
||||
|
||||
let mut dst = [MaybeUninit::uninit()];
|
||||
let src = [rc.clone()];
|
||||
let src = [Bomb];
|
||||
|
||||
MaybeUninit::write_slice_cloned(&mut dst, &src);
|
||||
|
||||
drop(src);
|
||||
|
||||
assert_eq!(Rc::strong_count(&rc), 2);
|
||||
forget(src);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user