diff --git a/src/boxed.rs b/src/boxed.rs index b1878bac..df403b58 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::zeroed()); - MM::init(&mut *inner); + let mut inner = 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 a985bb76..0fa4762f 100644 --- a/src/object.rs +++ b/src/object.rs @@ -1269,8 +1269,9 @@ impl ObjectExt for T { return Err(glib_bool_error!("Signal not found")); } - let mut details = mem::zeroed(); - gobject_sys::g_signal_query(signal_id, &mut details); + let mut details = mem::MaybeUninit::zeroed(); + gobject_sys::g_signal_query(signal_id, details.as_mut_ptr()); + let details = details.assume_init(); if details.signal_id != signal_id { return Err(glib_bool_error!("Signal not found")); } @@ -1370,8 +1371,9 @@ impl ObjectExt for T { return Err(glib_bool_error!("Signal not found")); } - let mut details = mem::zeroed(); - gobject_sys::g_signal_query(signal_id, &mut details); + let mut details = mem::MaybeUninit::zeroed(); + gobject_sys::g_signal_query(signal_id, details.as_mut_ptr()); + let details = details.assume_init(); if details.signal_id != signal_id { return Err(glib_bool_error!("Signal not found")); } diff --git a/src/value.rs b/src/value.rs index 53f7953a..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::zeroed(), PhantomData) + mem::zeroed() } }