Skip to content

Commit cb0eaca

Browse files
committed
glib: Remove SendWeakRef::new() because implementation is unsound
1 parent 6d1669f commit cb0eaca

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

glib/src/object.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3583,18 +3583,13 @@ impl<T: ObjectType> PartialOrd for WeakRef<T> {
35833583
/// where it was created on will panic but dropping or cloning can be done
35843584
/// safely from any thread.
35853585
#[derive(Debug)]
3586-
pub struct SendWeakRef<T: ObjectType>(WeakRef<T>, Option<usize>);
3586+
pub struct SendWeakRef<T: ObjectType>(WeakRef<T>, usize);
35873587

35883588
impl<T: ObjectType> SendWeakRef<T> {
3589-
#[inline]
3590-
pub fn new() -> SendWeakRef<T> {
3591-
SendWeakRef(WeakRef::new(), None)
3592-
}
3593-
35943589
#[inline]
35953590
pub fn into_weak_ref(self) -> WeakRef<T> {
35963591
assert!(
3597-
self.1.is_none() || self.1 == Some(thread_id()),
3592+
self.1 == thread_id(),
35983593
"SendWeakRef dereferenced on a different thread",
35993594
);
36003595

@@ -3608,7 +3603,7 @@ impl<T: ObjectType> ops::Deref for SendWeakRef<T> {
36083603
#[inline]
36093604
fn deref(&self) -> &WeakRef<T> {
36103605
assert!(
3611-
self.1.is_none() || self.1 == Some(thread_id()),
3606+
self.1 == thread_id(),
36123607
"SendWeakRef dereferenced on a different thread"
36133608
);
36143609

@@ -3627,14 +3622,14 @@ impl<T: ObjectType> Clone for SendWeakRef<T> {
36273622
impl<T: ObjectType> Default for SendWeakRef<T> {
36283623
#[inline]
36293624
fn default() -> Self {
3630-
Self::new()
3625+
Self::from(WeakRef::new())
36313626
}
36323627
}
36333628

36343629
impl<T: ObjectType> From<WeakRef<T>> for SendWeakRef<T> {
36353630
#[inline]
36363631
fn from(v: WeakRef<T>) -> SendWeakRef<T> {
3637-
SendWeakRef(v, Some(thread_id()))
3632+
SendWeakRef(v, thread_id())
36383633
}
36393634
}
36403635

0 commit comments

Comments
 (0)