diff options
| author | Henry <mail@henrygressmann.de> | 2026-07-15 16:23:02 +0200 |
|---|---|---|
| committer | Henry <mail@henrygressmann.de> | 2026-07-15 16:23:02 +0200 |
| commit | 957b62bf1d6205409bac94a4ced790dfb8007e3d (patch) | |
| tree | 4e7e580c4bb187c57e4e2dfb3ffe7fef5a1771bf /crates/parser/src/module.rs | |
| parent | f99b3a90827406b48657d63d7c1f0188ddd68c8f (diff) | |
fix: 64 bit table addressing
Signed-off-by: Henry <mail@henrygressmann.de>
Diffstat (limited to 'crates/parser/src/module.rs')
| -rw-r--r-- | crates/parser/src/module.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/crates/parser/src/module.rs b/crates/parser/src/module.rs index 9273d44..05811ec 100644 --- a/crates/parser/src/module.rs +++ b/crates/parser/src/module.rs @@ -128,8 +128,18 @@ impl<'a> ModuleReader<'a> { if let Some(validator) = validator.as_mut() { validator.table_section(&reader)?; } - self.table_types = - reader.into_iter().map(|table| convert_module_table(table?)).collect::<Result<_>>()?; + self.table_types = reader + .into_iter() + .map(|table| { + let table = table?; + let element_type = convert_reftype(table.ty.element_type)?; + Ok(if table.ty.table64 { + TableType::new64(element_type, table.ty.initial, table.ty.maximum) + } else { + TableType::new(element_type, table.ty.initial, table.ty.maximum) + }) + }) + .collect::<Result<_>>()?; } Payload::MemorySection(reader) => { check_section("memory", !self.memory_types.is_empty())?; |
