Skip to content

Commit b417a8c

Browse files
committed
Fixed lifetime bug
1 parent 6dc9533 commit b417a8c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/runtime.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -382,15 +382,17 @@ impl Object {
382382
/// of type `T`.
383383
pub unsafe fn get_mut_ivar<T>(&mut self, name: &str) -> &mut T
384384
where T: Encode {
385-
let cls = self.class();
386-
let ptr = match cls.instance_variable(name) {
385+
let offset = match self.class().instance_variable(name) {
387386
Some(ivar) => {
388387
assert!(ivar.type_encoding() == T::encode());
389388
let offset = ivar.offset();
390-
let self_ptr: *mut Object = self;
391-
(self_ptr as *mut u8).offset(offset) as *mut T
389+
offset
392390
}
393-
None => panic!("Ivar {} not found on class {}", name, cls.name()),
391+
None => panic!("Ivar {} not found on class {}", name, self.class().name()),
392+
};
393+
let ptr = {
394+
let self_ptr: *mut Object = self;
395+
(self_ptr as *mut u8).offset(offset) as *mut T
394396
};
395397
&mut *ptr
396398
}

0 commit comments

Comments
 (0)