@@ -3,7 +3,6 @@ use std::hash;
3
3
use std:: marker:: { PhantomData , PhantomFn } ;
4
4
use std:: mem;
5
5
use std:: ops:: { Deref , DerefMut } ;
6
- use std:: ptr;
7
6
8
7
use { Message , ToMessage } ;
9
8
use runtime:: Object ;
@@ -45,7 +44,6 @@ impl Ownership for Shared { }
45
44
/// object, but a `ShareId` can be cloned to provide more references to the
46
45
/// object. An owned `Id` can be "downgraded" freely to a `ShareId`, but there
47
46
/// is no way to safely upgrade back.
48
- #[ unsafe_no_drop_flag]
49
47
pub struct Id < T , O = Owned > {
50
48
ptr : * mut T ,
51
49
own : PhantomData < O > ,
@@ -106,11 +104,8 @@ impl<T> Clone for Id<T, Shared> where T: Message {
106
104
#[ unsafe_destructor]
107
105
impl < T , O > Drop for Id < T , O > where T : Message {
108
106
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 ) ;
114
109
}
115
110
}
116
111
}
@@ -164,11 +159,8 @@ pub type ShareId<T> = Id<T, Shared>;
164
159
165
160
#[ cfg( test) ]
166
161
mod tests {
167
- use std:: mem;
168
-
169
162
use runtime:: Object ;
170
163
use test_utils;
171
- use super :: Id ;
172
164
173
165
fn retain_count ( obj : & Object ) -> usize {
174
166
unsafe { msg_send ! [ obj, retainCount] }
@@ -189,11 +181,4 @@ mod tests {
189
181
drop ( obj) ;
190
182
assert ! ( retain_count( & cloned) == 1 ) ;
191
183
}
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
- }
199
184
}
0 commit comments