diff --git a/src/builder/import.rs b/src/builder/import.rs index 7a5adb5..49f8e90 100644 --- a/src/builder/import.rs +++ b/src/builder/import.rs @@ -95,7 +95,7 @@ impl ImportExternalBuilder where F: Invoke { /// Memory mapping with specified limits pub fn memory(mut self, min: u32, max: Option) -> F::Result { - self.binding = elements::External::Memory(elements::MemoryType::new(min, max)); + self.binding = elements::External::Memory(elements::MemoryType::new(min, max, false)); self.callback.invoke(self.binding) } diff --git a/src/builder/module.rs b/src/builder/module.rs index 16e7b42..077bd44 100644 --- a/src/builder/module.rs +++ b/src/builder/module.rs @@ -206,7 +206,7 @@ impl ModuleBuilder where F: Invoke { /// Push linear memory region pub fn push_memory(&mut self, mut memory: memory::MemoryDefinition) -> u32 { let entries = self.module.memory.entries_mut(); - entries.push(elements::MemoryType::new(memory.min, memory.max)); + entries.push(elements::MemoryType::new(memory.min, memory.max, false)); let memory_index = (entries.len() - 1) as u32; for data in memory.data.drain(..) { self.module.data.entries_mut() diff --git a/src/elements/import_entry.rs b/src/elements/import_entry.rs index 7708d3a..2db95d2 100644 --- a/src/elements/import_entry.rs +++ b/src/elements/import_entry.rs @@ -162,9 +162,14 @@ pub struct MemoryType(ResizableLimits); impl MemoryType { /// New memory definition - pub fn new(min: u32, max: Option) -> Self { - MemoryType(ResizableLimits::new(min, max)) + pub fn new(min: u32, max: Option, shared: bool) -> Self { + let mut r = ResizableLimits::new(min, max); + if shared { + r.flags |= 0x2; + } + MemoryType(r) } + /// Limits of the memory entry. pub fn limits(&self) -> &ResizableLimits { &self.0