mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-03-11 16:35:33 +00:00
Fix ref.func function declared check in wasm loader (#2972)
The forward-declare function reference in ref.func can be declared in table element segments, no matter whether the segment mode is passive, active or declarative. Reported in https://github.com/bytecodealliance/wasm-micro-runtime/issues/2944.
This commit is contained in:
parent
75a2b98eb4
commit
1ee4767d97
|
@ -8116,10 +8116,11 @@ re_scan:
|
|||
bool func_declared = false;
|
||||
uint32 j;
|
||||
|
||||
/* Check whether the function is declared in table segs */
|
||||
/* Check whether the function is declared in table segs,
|
||||
note that it doesn't matter whether the table seg's mode
|
||||
is passive, active or declarative. */
|
||||
for (i = 0; i < module->table_seg_count; i++, table_seg++) {
|
||||
if (table_seg->elem_type == VALUE_TYPE_FUNCREF
|
||||
&& wasm_elem_is_declarative(table_seg->mode)) {
|
||||
if (table_seg->elem_type == VALUE_TYPE_FUNCREF) {
|
||||
for (j = 0; j < table_seg->function_count; j++) {
|
||||
if (table_seg->func_indexes[j] == func_idx) {
|
||||
func_declared = true;
|
||||
|
|
|
@ -6411,10 +6411,11 @@ re_scan:
|
|||
bool func_declared = false;
|
||||
uint32 j;
|
||||
|
||||
/* Check whether the function is declared in table segs */
|
||||
/* Check whether the function is declared in table segs,
|
||||
note that it doesn't matter whether the table seg's mode
|
||||
is passive, active or declarative. */
|
||||
for (i = 0; i < module->table_seg_count; i++, table_seg++) {
|
||||
if (table_seg->elem_type == VALUE_TYPE_FUNCREF
|
||||
&& wasm_elem_is_declarative(table_seg->mode)) {
|
||||
if (table_seg->elem_type == VALUE_TYPE_FUNCREF) {
|
||||
for (j = 0; j < table_seg->function_count; j++) {
|
||||
if (table_seg->func_indexes[j] == func_idx) {
|
||||
func_declared = true;
|
||||
|
|
Loading…
Reference in New Issue
Block a user