Skip to content

Commit 0a92d38

Browse files
committed
use memory_data nad not has_memory
1 parent 27d907c commit 0a92d38

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

bindings/rust/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,13 +292,14 @@ impl Instance {
292292
/// Ensure the range is valid according to the currently available memory size.
293293
fn checked_memory_range(
294294
&self,
295+
memory_data: *mut u8,
295296
memory_size: usize,
296297
offset: u32,
297298
size: usize,
298299
) -> Result<core::ops::Range<usize>, ()> {
299300
// This is safe given usize::BITS >= u32::BITS, see https://doc.rust-lang.org/std/primitive.usize.html.
300301
let offset = offset as usize;
301-
let has_memory = unsafe { sys::fizzy_module_has_memory(self.get_module()) };
302+
let has_memory = memory_data != std::ptr::null_mut();
302303
if !has_memory || offset.checked_add(size).is_none() || (offset + size) > memory_size {
303304
return Err(());
304305
}
@@ -312,7 +313,7 @@ impl Instance {
312313
pub unsafe fn checked_memory_slice(&self, offset: u32, size: usize) -> Result<&[u8], ()> {
313314
let memory_data = sys::fizzy_get_instance_memory_data(self.0.as_ptr());
314315
let memory_size = sys::fizzy_get_instance_memory_size(self.0.as_ptr());
315-
let range = self.checked_memory_range(memory_size, offset, size)?;
316+
let range = self.checked_memory_range(memory_data, memory_size, offset, size)?;
316317
// Slices allow empty length, but data must be a valid pointer.
317318
debug_assert!(memory_data != std::ptr::null_mut());
318319
let memory = std::slice::from_raw_parts(memory_data, memory_size);
@@ -330,7 +331,7 @@ impl Instance {
330331
) -> Result<&mut [u8], ()> {
331332
let memory_data = sys::fizzy_get_instance_memory_data(self.0.as_ptr());
332333
let memory_size = sys::fizzy_get_instance_memory_size(self.0.as_ptr());
333-
let range = self.checked_memory_range(memory_size, offset, size)?;
334+
let range = self.checked_memory_range(memory_data, memory_size, offset, size)?;
334335
// Slices allow empty length, but data must be a valid pointer.
335336
debug_assert!(memory_data != std::ptr::null_mut());
336337
let memory = std::slice::from_raw_parts_mut(memory_data, memory_size);

0 commit comments

Comments
 (0)