fast-interp: Fix dynamic offset error issue in else branch (#3058)

Reported in https://github.com/bytecodealliance/wasm-micro-runtime/issues/3026.
This commit is contained in:
Xu Jun 2024-01-19 19:58:12 +08:00 committed by GitHub
parent bc35602004
commit 1977ad23ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View File

@ -7400,6 +7400,15 @@ re_scan:
bh_memcpy_s(loader_ctx->frame_offset, size,
block->param_frame_offsets, size);
loader_ctx->frame_offset += (size / sizeof(int16));
/* recover dynamic offset */
for (i = 0; i < block->available_param_num; i++) {
if (block->param_frame_offsets[i]
>= loader_ctx->dynamic_offset) {
loader_ctx->dynamic_offset =
block->param_frame_offsets[i] + 1;
}
}
}
#endif

View File

@ -5813,6 +5813,15 @@ re_scan:
bh_memcpy_s(loader_ctx->frame_offset, size,
block->param_frame_offsets, size);
loader_ctx->frame_offset += (size / sizeof(int16));
/* recover dynamic offset */
for (i = 0; i < block->available_param_num; i++) {
if (block->param_frame_offsets[i]
>= loader_ctx->dynamic_offset) {
loader_ctx->dynamic_offset =
block->param_frame_offsets[i] + 1;
}
}
}
#endif