diff --git a/build/src/main.rs b/build/src/main.rs index 484dc2a..2b8d37a 100644 --- a/build/src/main.rs +++ b/build/src/main.rs @@ -141,7 +141,7 @@ fn main() { let mut stack_top_page = new_stack_top / 65536; if new_stack_top % 65536 > 0 { stack_top_page += 1 }; - module = externalize_mem(module, Some(stack_top_page)); + module = externalize_mem(module, Some(stack_top_page), 16); } if let Some(runtime_type) = matches.value_of("runtime_type") { diff --git a/src/ext.rs b/src/ext.rs index 5c65a1a..b1185e8 100644 --- a/src/ext.rs +++ b/src/ext.rs @@ -32,7 +32,7 @@ pub fn memory_section<'a>(module: &'a mut elements::Module) -> Option<&'a mut el None } -pub fn externalize_mem(mut module: elements::Module, adjust_pages: Option) -> elements::Module { +pub fn externalize_mem(mut module: elements::Module, adjust_pages: Option, max_pages: u32) -> elements::Module { let mut entry = memory_section(&mut module) .expect("Memory section to exist") .entries_mut() @@ -40,7 +40,8 @@ pub fn externalize_mem(mut module: elements::Module, adjust_pages: Option) .expect("Own memory entry to exist in memory section"); if let Some(adjust_pages) = adjust_pages { - entry = elements::MemoryType::new(adjust_pages, None); + assert!(adjust_pages <= max_pages); + entry = elements::MemoryType::new(adjust_pages, Some(max_pages)); } import_section(&mut module).expect("Import section to exist").entries_mut().push(