@@ -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