From 289fc5ef52ade0f98cc6aa5e85d0edd9e64094de Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sat, 27 Aug 2022 19:30:38 -0700 Subject: Fix a bug in how offsets are calculated. --- bytecode/src/heap.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'bytecode/src') diff --git a/bytecode/src/heap.rs b/bytecode/src/heap.rs index c61a30a..78a406f 100644 --- a/bytecode/src/heap.rs +++ b/bytecode/src/heap.rs @@ -171,13 +171,14 @@ impl Heap { } pub fn peek(&self, p: Pointer, offset: usize) -> Result { + let offset_bytes = offset * 8; let obj_sz = self.alloc_size(p)?; - if offset >= obj_sz { + if offset_bytes >= obj_sz { return Err(format!( - "invalid offset {offset} in an object of size {obj_sz}" + "invalid offset {offset_bytes} in an object of size {obj_sz}" )); } - let (u, _) = open_ptr(p.offset(offset)); + let (u, _) = open_ptr(p.offset(offset_bytes)); if u >= self.heap.len() { return Err(format!("invalid pointer {:x}", p)); } -- cgit v1.3.1