Skip to content

Commit 84f2158

Browse files
committed
Fix drop fill checking on 32-bit hosts.
1 parent cea1ff4 commit 84f2158

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/interpreter.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,9 @@ impl<'a, 'tcx: 'a, 'arena> Interpreter<'a, 'tcx, 'arena> {
393393
try!(self.memory.deallocate(contents_ptr));
394394
}
395395
Err(EvalError::ReadBytesAsPointer) => {
396-
let possible_drop_fill = try!(self.memory.read_usize(ptr));
397-
if possible_drop_fill == mem::POST_DROP_U64 {
396+
let size = self.memory.pointer_size;
397+
let possible_drop_fill = try!(self.memory.read_bytes(ptr, size));
398+
if possible_drop_fill.iter().all(|&b| b == mem::POST_DROP_U8) {
398399
return Ok(());
399400
} else {
400401
return Err(EvalError::ReadBytesAsPointer);

src/memory.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,10 @@ impl Memory {
284284
Ok(())
285285
}
286286

287+
pub fn read_bytes(&self, ptr: Pointer, size: usize) -> EvalResult<&[u8]> {
288+
self.get_bytes(ptr, size)
289+
}
290+
287291
pub fn write_bytes(&mut self, ptr: Pointer, src: &[u8]) -> EvalResult<()> {
288292
let bytes = try!(self.get_bytes_mut(ptr, src.len()));
289293
bytes.clone_from_slice(src);

0 commit comments

Comments
 (0)