diff --git a/src/memory.c b/src/memory.c index 6e8f8990..b4e9971d 100644 --- a/src/memory.c +++ b/src/memory.c @@ -121,7 +121,11 @@ caml_binaryen_get_memory_segment_byte_offset(value _module, value _name) { CAMLparam2(_module, _name); BinaryenModuleRef module = BinaryenModuleRef_val(_module); char* name = Safe_String_val(_name); - CAMLreturn(Val_int(BinaryenGetMemorySegmentByteOffset(module, name))); + if (BinaryenGetMemorySegmentPassive(module, name)) { + CAMLreturn(Val_int(-1)); + } else { + CAMLreturn(Val_int(BinaryenGetMemorySegmentByteOffset(module, name))); + } } CAMLprim value diff --git a/test/test.ml b/test/test.ml index a5ef4e90..07bdf174 100644 --- a/test/test.ml +++ b/test/test.ml @@ -248,6 +248,9 @@ let _ = Memory.set_memory max_memory_wasm_mod 1 2 "memory" [] false false "0" let _ = assert (Memory.has_max max_memory_wasm_mod "0" = true) let _ = assert (Memory.get_max max_memory_wasm_mod "0" = 2) +(* Memory.get_segment_byte_offset Passive *) +let _ = assert (Memory.get_segment_byte_offset wasm_mod "world" = -1) + let _ = assert ( Bytes.equal