Skip to content

Commit 26e3e74

Browse files
committed
Add checks for MissingValue in memset
1 parent 876e84f commit 26e3e74

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

lib/Runtime/Language/JavascriptOperators.cpp

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4685,7 +4685,13 @@ namespace Js
46854685
}
46864686
else if (instanceType == TypeIds_NativeIntArray)
46874687
{
4688-
returnValue = JavascriptArray::FromVar(instance)->DirectSetItemAtRange<int32>(start, length, JavascriptConversion::ToInt32(value, scriptContext));
4688+
int32 intValue = JavascriptConversion::ToInt32(value, scriptContext);
4689+
// Special case for missing item
4690+
if (SparseArraySegment<int32>::IsMissingItem(&intValue))
4691+
{
4692+
return false;
4693+
}
4694+
returnValue = JavascriptArray::FromVar(instance)->DirectSetItemAtRange<int32>(start, length, intValue);
46894695
}
46904696
else
46914697
{
@@ -4694,7 +4700,14 @@ namespace Js
46944700
{
46954701
return false;
46964702
}
4697-
returnValue = JavascriptArray::FromVar(instance)->DirectSetItemAtRange<double>(start, length, JavascriptConversion::ToNumber(value, scriptContext));
4703+
4704+
double doubleValue = JavascriptConversion::ToNumber(value, scriptContext);
4705+
// Special case for missing item
4706+
if (SparseArraySegment<double>::IsMissingItem(&doubleValue))
4707+
{
4708+
return false;
4709+
}
4710+
returnValue = JavascriptArray::FromVar(instance)->DirectSetItemAtRange<double>(start, length, doubleValue);
46984711
}
46994712
returnValue &= vt == VirtualTableInfoBase::GetVirtualTable(instance);
47004713
}

0 commit comments

Comments
 (0)