Skip to content

Commit bb5a840

Browse files
committed
Fix WebAssembly.Table constructor validation
1 parent e464c06 commit bb5a840

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

lib/Runtime/Library/WebAssemblyTable.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ WebAssemblyTable::NewInstance(RecyclableObject* function, CallInfo callInfo, ...
4646
DynamicObject * tableDescriptor = VarTo<DynamicObject>(args[1]);
4747

4848
Var elementVar = JavascriptOperators::OP_GetProperty(tableDescriptor, PropertyIds::element, scriptContext);
49-
if (!JavascriptOperators::StrictEqualString(elementVar, scriptContext->GetLibrary()->CreateStringFromCppLiteral(_u("anyfunc"))))
49+
auto elementStr = JavascriptConversion::ToString(elementVar, scriptContext);
50+
if (!JavascriptOperators::StrictEqualString(elementStr, scriptContext->GetLibrary()->CreateStringFromCppLiteral(_u("anyfunc"))))
5051
{
5152
JavascriptError::ThrowTypeError(scriptContext, WASMERR_ExpectedAnyFunc, _u("tableDescriptor.element"));
5253
}
@@ -55,9 +56,9 @@ WebAssemblyTable::NewInstance(RecyclableObject* function, CallInfo callInfo, ...
5556
uint32 initial = WebAssembly::ToNonWrappingUint32(initVar, scriptContext);
5657

5758
uint32 maximum = Wasm::Limits::GetMaxTableSize();
58-
if (JavascriptOperators::OP_HasProperty(tableDescriptor, PropertyIds::maximum, scriptContext))
59+
Var maxVar = JavascriptOperators::OP_GetProperty(tableDescriptor, PropertyIds::maximum, scriptContext);
60+
if (!JavascriptOperators::IsUndefined(maxVar))
5961
{
60-
Var maxVar = JavascriptOperators::OP_GetProperty(tableDescriptor, PropertyIds::maximum, scriptContext);
6162
maximum = WebAssembly::ToNonWrappingUint32(maxVar, scriptContext);
6263
}
6364
return Create(initial, maximum, scriptContext);

0 commit comments

Comments
 (0)