diff --git a/src/boxed.rs b/src/boxed.rs index 74730960..1a38b560 100644 --- a/src/boxed.rs +++ b/src/boxed.rs @@ -366,10 +366,10 @@ impl> Uninitialized for Boxed { unsafe fn uninitialized() -> Self { Boxed { inner: { - let mut inner = Box::::new(mem::MaybeUninit::zeroed().assume_init()); - MM::init(&mut *inner); + let mut inner = Box::new(mem::MaybeUninit::zeroed()); + MM::init(inner.as_mut_ptr()); - AnyBox::Native(inner) + AnyBox::Native(Box::new(inner.assume_init())) }, _dummy: PhantomData, } diff --git a/src/object.rs b/src/object.rs index c7ce0195..9c3216e0 100644 --- a/src/object.rs +++ b/src/object.rs @@ -1438,12 +1438,13 @@ impl ObjectExt for T { fn downgrade(&self) -> WeakRef { unsafe { - let w = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); + let mut w = Box::new(mem::MaybeUninit::zeroed()); gobject_sys::g_weak_ref_init( - mut_override(&*w.0), + mut_override((&mut *w).as_mut_ptr()), self.as_object_ref().to_glib_none().0, ); - w + + WeakRef(Box::new((&mut *w).assume_init()), PhantomData) } } @@ -1532,9 +1533,13 @@ pub struct WeakRef(Box, PhantomData<*const impl WeakRef { pub fn new() -> WeakRef { unsafe { - let w = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); - gobject_sys::g_weak_ref_init(mut_override(&*w.0), ptr::null_mut()); - w + let mut w = Box::new(mem::MaybeUninit::zeroed()); + gobject_sys::g_weak_ref_init( + (&mut *w).as_mut_ptr(), + ptr::null_mut(), + ); + + WeakRef(Box::new((&mut *w).assume_init()), PhantomData) } } diff --git a/src/time_val.rs b/src/time_val.rs index 0132b1d7..32bcc4a9 100644 --- a/src/time_val.rs +++ b/src/time_val.rs @@ -27,6 +27,6 @@ impl<'a> ToGlibPtrMut<'a, *mut glib_sys::GTimeVal> for TimeVal { impl Uninitialized for TimeVal { unsafe fn uninitialized() -> TimeVal { - mem::MaybeUninit::zeroed().assume_init() + mem::zeroed() } } diff --git a/src/value.rs b/src/value.rs index 3f054c1c..e552726f 100644 --- a/src/value.rs +++ b/src/value.rs @@ -199,7 +199,7 @@ impl Value { } #[doc(hidden)] - pub fn into_raw(mut self) -> gobject_sys::GValue { + pub fn into_raw(self) -> gobject_sys::GValue { unsafe { let ret = ptr::read(&self.0); mem::forget(self); @@ -273,7 +273,7 @@ impl From for Value { impl Uninitialized for Value { unsafe fn uninitialized() -> Value { - Value(mem::MaybeUninit::zeroed().assume_init(), PhantomData) + mem::zeroed() } }