From c0adf5835968f5d97864067c8262e7fe6c1f59ad Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 11 Jul 2019 23:28:45 +0200 Subject: [PATCH 1/2] Replace zeroed with MaybeUninit::zeroed --- src/boxed.rs | 2 +- src/closure.rs | 2 +- src/object.rs | 18 ++++++++++-------- src/time_val.rs | 2 +- src/value.rs | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/boxed.rs b/src/boxed.rs index b1878bac..74730960 100644 --- a/src/boxed.rs +++ b/src/boxed.rs @@ -366,7 +366,7 @@ impl> Uninitialized for Boxed { unsafe fn uninitialized() -> Self { Boxed { inner: { - let mut inner = Box::::new(mem::zeroed()); + let mut inner = Box::::new(mem::MaybeUninit::zeroed().assume_init()); MM::init(&mut *inner); AnyBox::Native(inner) diff --git a/src/closure.rs b/src/closure.rs index bb272dcb..bf86f786 100644 --- a/src/closure.rs +++ b/src/closure.rs @@ -93,7 +93,7 @@ impl Closure { let mut result = unsafe { Value::uninitialized() }; let v_args: Vec; - let mut s_args: [Value; 10] = unsafe { mem::zeroed() }; + let mut s_args: [Value; 10] = unsafe { mem::MaybeUninit::zeroed().assume_init() }; let values = if values.len() <= 10 { for (i, arg) in values.iter().enumerate() { s_args[i] = arg.to_value(); diff --git a/src/object.rs b/src/object.rs index a985bb76..c7ce0195 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")); } @@ -1389,7 +1391,7 @@ impl ObjectExt for T { } let mut v_args: Vec; - let mut s_args: [Value; 10] = mem::zeroed(); + let mut s_args: [Value; 10] = mem::MaybeUninit::zeroed().assume_init(); let self_v = { let mut v = Value::uninitialized(); gobject_sys::g_value_init(v.to_glib_none_mut().0, self.get_type().to_glib()); @@ -1436,7 +1438,7 @@ impl ObjectExt for T { fn downgrade(&self) -> WeakRef { unsafe { - let w = WeakRef(Box::new(mem::zeroed()), PhantomData); + let w = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); gobject_sys::g_weak_ref_init( mut_override(&*w.0), self.as_object_ref().to_glib_none().0, @@ -1530,7 +1532,7 @@ pub struct WeakRef(Box, PhantomData<*const impl WeakRef { pub fn new() -> WeakRef { unsafe { - let w = WeakRef(Box::new(mem::zeroed()), PhantomData); + 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 } @@ -1560,7 +1562,7 @@ impl Drop for WeakRef { impl Clone for WeakRef { fn clone(&self) -> Self { unsafe { - let c = WeakRef(Box::new(mem::zeroed()), PhantomData); + let c = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); let o = gobject_sys::g_weak_ref_get(mut_override(&*self.0)); gobject_sys::g_weak_ref_init(mut_override(&*c.0), o); diff --git a/src/time_val.rs b/src/time_val.rs index 32bcc4a9..0132b1d7 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::zeroed() + mem::MaybeUninit::zeroed().assume_init() } } diff --git a/src/value.rs b/src/value.rs index 53f7953a..3f054c1c 100644 --- a/src/value.rs +++ b/src/value.rs @@ -273,7 +273,7 @@ impl From for Value { impl Uninitialized for Value { unsafe fn uninitialized() -> Value { - Value(mem::zeroed(), PhantomData) + Value(mem::MaybeUninit::zeroed().assume_init(), PhantomData) } } From 2ec63a373e349ddfdf14e2ea293e718903cc0a3b Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 11 Jul 2019 23:29:53 +0200 Subject: [PATCH 2/2] Fix "extra mut" warning --- src/boxed.rs | 6 +++--- src/closure.rs | 2 +- src/object.rs | 8 ++++---- src/time_val.rs | 2 +- src/value.rs | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/boxed.rs b/src/boxed.rs index 74730960..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::MaybeUninit::zeroed().assume_init()); - 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/closure.rs b/src/closure.rs index bf86f786..bb272dcb 100644 --- a/src/closure.rs +++ b/src/closure.rs @@ -93,7 +93,7 @@ impl Closure { let mut result = unsafe { Value::uninitialized() }; let v_args: Vec; - let mut s_args: [Value; 10] = unsafe { mem::MaybeUninit::zeroed().assume_init() }; + let mut s_args: [Value; 10] = unsafe { mem::zeroed() }; let values = if values.len() <= 10 { for (i, arg) in values.iter().enumerate() { s_args[i] = arg.to_value(); diff --git a/src/object.rs b/src/object.rs index c7ce0195..0fa4762f 100644 --- a/src/object.rs +++ b/src/object.rs @@ -1391,7 +1391,7 @@ impl ObjectExt for T { } let mut v_args: Vec; - let mut s_args: [Value; 10] = mem::MaybeUninit::zeroed().assume_init(); + let mut s_args: [Value; 10] = mem::zeroed(); let self_v = { let mut v = Value::uninitialized(); gobject_sys::g_value_init(v.to_glib_none_mut().0, self.get_type().to_glib()); @@ -1438,7 +1438,7 @@ impl ObjectExt for T { fn downgrade(&self) -> WeakRef { unsafe { - let w = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); + let w = WeakRef(Box::new(mem::zeroed()), PhantomData); gobject_sys::g_weak_ref_init( mut_override(&*w.0), self.as_object_ref().to_glib_none().0, @@ -1532,7 +1532,7 @@ pub struct WeakRef(Box, PhantomData<*const impl WeakRef { pub fn new() -> WeakRef { unsafe { - let w = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); + let w = WeakRef(Box::new(mem::zeroed()), PhantomData); gobject_sys::g_weak_ref_init(mut_override(&*w.0), ptr::null_mut()); w } @@ -1562,7 +1562,7 @@ impl Drop for WeakRef { impl Clone for WeakRef { fn clone(&self) -> Self { unsafe { - let c = WeakRef(Box::new(mem::MaybeUninit::zeroed().assume_init()), PhantomData); + let c = WeakRef(Box::new(mem::zeroed()), PhantomData); let o = gobject_sys::g_weak_ref_get(mut_override(&*self.0)); gobject_sys::g_weak_ref_init(mut_override(&*c.0), o); 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() } }