Skip to content

Commit 8293638

Browse files
committed
fix
1 parent 090814f commit 8293638

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/wasm-interpreter.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4824,7 +4824,11 @@ class ModuleRunnerBase : public ExpressionRunner<SubType> {
48244824
return funcFlow;
48254825
}
48264826
// Create a new continuation for the target function.
4827-
Name funcName = funcFlow.getSingleValue().getFunc();
4827+
auto funcValue = funcFlow.getSingleValue();
4828+
if (funcValue.isNull()) {
4829+
trap("null ref");
4830+
}
4831+
auto funcName = funcValue.getFunc();
48284832
auto* func = self()->getModule()->getFunction(funcName);
48294833
return Literal(std::make_shared<ContData>(
48304834
self()->makeFuncData(func->name, func->type), curr->type.getHeapType()));

test/spec/cont.wast

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,17 @@
117117
(call $nl4 (cont.new $k1 (ref.func $r1)))
118118
)
119119

120-
(func (export "null")
120+
(func (export "null-resume")
121121
(resume $k1
122122
(ref.null $k1)
123123
)
124124
)
125+
126+
(func (export "null-new") (result (ref null $k1))
127+
(cont.new $k1
128+
(ref.null $f1)
129+
)
130+
)
125131
)
126132

127133
(assert_suspension (invoke "unhandled-1") "unhandled")
@@ -138,7 +144,8 @@
138144
(assert_trap (invoke "non-linear-3") "continuation already consumed")
139145
(assert_trap (invoke "non-linear-4") "continuation already consumed")
140146

141-
(assert_trap (invoke "null") "null continuation reference")
147+
(assert_trap (invoke "null-resume") "null continuation reference")
148+
(assert_trap (invoke "null-new") "null function reference")
142149

143150
(assert_invalid
144151
(module

0 commit comments

Comments
 (0)