diff options
| author | Rose Hogenson <rhogenson@posteo.net> | 2022-08-27 19:30:38 -0700 |
|---|---|---|
| committer | Rose Hogenson <rhogenson@posteo.net> | 2022-08-27 19:30:38 -0700 |
| commit | 289fc5ef52ade0f98cc6aa5e85d0edd9e64094de (patch) | |
| tree | 805bac77f086b5563f1519338ddd46a170fd2590 /bytecode/src | |
| parent | 59ca512ec8f099a7d4c8aa4392f939d1aa5aee5d (diff) | |
| download | chromatopelma-289fc5ef52ade0f98cc6aa5e85d0edd9e64094de.tar.zst | |
Fix a bug in how offsets are calculated.
Diffstat (limited to 'bytecode/src')
| -rw-r--r-- | bytecode/src/heap.rs | 7 |
1 files changed, 4 insertions, 3 deletions
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<Value, String> { + 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)); } |
