summaryrefslogtreecommitdiff
path: root/src/binary-reader-ast.c
diff options
context:
space:
mode:
authorBen Smith <binjimin@gmail.com>2017-02-16 11:02:51 -0800
committerGitHub <noreply@github.com>2017-02-16 11:02:51 -0800
commit6463c765207e37e55af1c6a06ff06071af131c07 (patch)
tree3ddc63718c0ee50fd3aef5162f38c6324c473828 /src/binary-reader-ast.c
parente077c23cc9e7deb2c6b9733da08e7455d05859c4 (diff)
downloadwabt-6463c765207e37e55af1c6a06ff06071af131c07.tar.gz
wabt-6463c765207e37e55af1c6a06ff06071af131c07.tar.bz2
wabt-6463c765207e37e55af1c6a06ff06071af131c07.zip
Fix bug in wasm2wast w/ many imports (#305)
This fixes issue #304.
Diffstat (limited to 'src/binary-reader-ast.c')
-rw-r--r--src/binary-reader-ast.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/binary-reader-ast.c b/src/binary-reader-ast.c
index 956d2be1..b010c76f 100644
--- a/src/binary-reader-ast.c
+++ b/src/binary-reader-ast.c
@@ -280,7 +280,9 @@ static WabtResult on_import_global(uint32_t import_index,
static WabtResult on_function_signatures_count(uint32_t count,
void* user_data) {
Context* ctx = user_data;
- wabt_reserve_func_ptrs(ctx->allocator, &ctx->module->funcs, count);
+ wabt_reserve_func_ptrs(ctx->allocator,
+ &ctx->module->funcs,
+ ctx->module->num_func_imports + count);
return WABT_OK;
}
@@ -311,7 +313,8 @@ static WabtResult on_function_signature(uint32_t index,
static WabtResult on_table_count(uint32_t count, void* user_data) {
Context* ctx = user_data;
- wabt_reserve_table_ptrs(ctx->allocator, &ctx->module->tables, count);
+ wabt_reserve_table_ptrs(ctx->allocator, &ctx->module->tables,
+ ctx->module->num_table_imports + count);
return WABT_OK;
}
@@ -338,7 +341,8 @@ static WabtResult on_table(uint32_t index,
static WabtResult on_memory_count(uint32_t count, void* user_data) {
Context* ctx = user_data;
- wabt_reserve_memory_ptrs(ctx->allocator, &ctx->module->memories, count);
+ wabt_reserve_memory_ptrs(ctx->allocator, &ctx->module->memories,
+ ctx->module->num_memory_imports + count);
return WABT_OK;
}
@@ -364,7 +368,8 @@ static WabtResult on_memory(uint32_t index,
static WabtResult on_global_count(uint32_t count, void* user_data) {
Context* ctx = user_data;
- wabt_reserve_global_ptrs(ctx->allocator, &ctx->module->globals, count);
+ wabt_reserve_global_ptrs(ctx->allocator, &ctx->module->globals,
+ ctx->module->num_global_imports + count);
return WABT_OK;
}
@@ -373,8 +378,7 @@ static WabtResult begin_global(uint32_t index,
WabtBool mutable_,
void* user_data) {
Context* ctx = user_data;
- assert(index - ctx->module->num_global_imports <
- ctx->module->globals.capacity);
+ assert(index < ctx->module->globals.capacity);
WabtModuleField* field =
wabt_append_module_field(ctx->allocator, ctx->module);