diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index af77b4a4e..c37e34d8e 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -459,7 +459,7 @@ impl EmscriptenGlobals { } let (table_min, table_max) = get_emscripten_table_size(&module)?; - let (memory_min, memory_max, shared) = get_emscripten_memory_size(&module); + let (memory_min, memory_max, shared) = get_emscripten_memory_size(&module)?; // Memory initialization let memory_type = MemoryDescriptor { diff --git a/lib/emscripten/src/utils.rs b/lib/emscripten/src/utils.rs index 84ad7486d..af60215a9 100644 --- a/lib/emscripten/src/utils.rs +++ b/lib/emscripten/src/utils.rs @@ -41,13 +41,12 @@ pub fn get_emscripten_table_size(module: &Module) -> Result<(u32, Option), Ok((table.minimum, table.maximum)) } -pub fn get_emscripten_memory_size(module: &Module) -> (Pages, Option, bool) { - assert!( - module.info().imported_tables.len() > 0, - "Emscripten requires at least one imported memory" - ); +pub fn get_emscripten_memory_size(module: &Module) -> Result<(Pages, Option, bool), String> { + if module.info().imported_tables.len() == 0 { + return Err("Emscripten requires at least one imported memory".to_string()); + } let (_, memory) = &module.info().imported_memories[ImportedMemoryIndex::new(0)]; - (memory.minimum, memory.maximum, memory.shared) + Ok((memory.minimum, memory.maximum, memory.shared)) } /// Reads values written by `-s EMIT_EMSCRIPTEN_METADATA=1`