Skip to content

Commit 6906c2f

Browse files
committed
Remove unsafe_no_drop_flag from Id.
1 parent d7f470e commit 6906c2f

File tree

2 files changed

+3
-18
lines changed

2 files changed

+3
-18
lines changed

core/id.rs

+2-17
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use std::hash;
33
use std::marker::{PhantomData, PhantomFn};
44
use std::mem;
55
use std::ops::{Deref, DerefMut};
6-
use std::ptr;
76

87
use {Message, ToMessage};
98
use runtime::Object;
@@ -45,7 +44,6 @@ impl Ownership for Shared { }
4544
/// object, but a `ShareId` can be cloned to provide more references to the
4645
/// object. An owned `Id` can be "downgraded" freely to a `ShareId`, but there
4746
/// is no way to safely upgrade back.
48-
#[unsafe_no_drop_flag]
4947
pub struct Id<T, O = Owned> {
5048
ptr: *mut T,
5149
own: PhantomData<O>,
@@ -106,11 +104,8 @@ impl<T> Clone for Id<T, Shared> where T: Message {
106104
#[unsafe_destructor]
107105
impl<T, O> Drop for Id<T, O> where T: Message {
108106
fn drop(&mut self) {
109-
if !self.ptr.is_null() {
110-
let ptr = mem::replace(&mut self.ptr, ptr::null_mut());
111-
unsafe {
112-
release(ptr);
113-
}
107+
unsafe {
108+
release(self.ptr);
114109
}
115110
}
116111
}
@@ -164,11 +159,8 @@ pub type ShareId<T> = Id<T, Shared>;
164159

165160
#[cfg(test)]
166161
mod tests {
167-
use std::mem;
168-
169162
use runtime::Object;
170163
use test_utils;
171-
use super::Id;
172164

173165
fn retain_count(obj: &Object) -> usize {
174166
unsafe { msg_send![obj, retainCount] }
@@ -189,11 +181,4 @@ mod tests {
189181
drop(obj);
190182
assert!(retain_count(&cloned) == 1);
191183
}
192-
193-
#[test]
194-
fn test_size() {
195-
let id_size = mem::size_of::<Id<Object>>();
196-
let ptr_size = mem::size_of::<*const Object>();
197-
assert!(id_size == ptr_size);
198-
}
199184
}

core/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#![crate_name = "objc"]
44
#![crate_type = "lib"]
55

6-
#![feature(std_misc, unsafe_destructor, unsafe_no_drop_flag)]
6+
#![feature(std_misc, unsafe_destructor)]
77
#![warn(missing_docs)]
88

99
extern crate libc;

0 commit comments

Comments
 (0)