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:
bors 2020-12-20 10:08:56 +00:00
commit 59aaa2a04b
1 changed files with 11 additions and 5 deletions

View File

@ -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);
}