fix UB in ancient test
This commit is contained in:
parent
adb4bfd25d
commit
0ea0c90d58
@ -22,15 +22,15 @@ struct Ccx {
|
|||||||
x: isize,
|
x: isize,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn allocate(_bcx: &arena) -> &Bcx<'_> {
|
fn allocate(_bcx: &arena) -> &mut Bcx<'_> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let layout = Layout::new::<Bcx>();
|
let layout = Layout::new::<Bcx>();
|
||||||
let ptr = Global.allocate(layout).unwrap_or_else(|_| handle_alloc_error(layout));
|
let ptr = Global.allocate(layout).unwrap_or_else(|_| handle_alloc_error(layout));
|
||||||
&*(ptr.as_ptr() as *const _)
|
&mut *ptr.as_ptr().cast()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn h<'a>(bcx: &'a Bcx<'a>) -> &'a Bcx<'a> {
|
fn h<'a>(bcx: &'a Bcx<'a>) -> &'a mut Bcx<'a> {
|
||||||
return allocate(bcx.fcx.arena);
|
return allocate(bcx.fcx.arena);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ fn g(fcx: &Fcx) {
|
|||||||
let bcx = Bcx { fcx };
|
let bcx = Bcx { fcx };
|
||||||
let bcx2 = h(&bcx);
|
let bcx2 = h(&bcx);
|
||||||
unsafe {
|
unsafe {
|
||||||
Global.deallocate(NonNull::new_unchecked(bcx2 as *const _ as *mut _), Layout::new::<Bcx>());
|
Global.deallocate(NonNull::new_unchecked(bcx2 as *mut _ as *mut _), Layout::new::<Bcx>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user