Skip to content

Commit 48f74e6

Browse files
boingoingpleath
authored andcommitted
1 parent bdd48f2 commit 48f74e6

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lib/Runtime/Library/JavascriptArray.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11901,15 +11901,16 @@ using namespace Js;
1190111901
SparseArraySegment<typename T::TElement>* src = SparseArraySegment<typename T::TElement>::From(instance->head);
1190211902
SparseArraySegment<typename T::TElement>* dst;
1190311903

11904+
uint32 sourceSize = src->size;
1190411905
if (IsInlineSegment(src, instance))
1190511906
{
11906-
Assert(src->size <= SparseArraySegmentBase::INLINE_CHUNK_SIZE);
11907-
1190811907
// Copy head segment data between inlined head segments
1190911908
dst = DetermineInlineHeadSegmentPointer<T, 0, true>(static_cast<T*>(this));
1191011909
dst->left = src->left;
1191111910
dst->length = src->length;
11912-
dst->size = src->size;
11911+
uint inlineChunkSize = SparseArraySegmentBase::INLINE_CHUNK_SIZE;
11912+
dst->size = min(src->size, inlineChunkSize);
11913+
sourceSize = dst->size;
1191311914
}
1191411915
else
1191511916
{
@@ -11922,9 +11923,9 @@ using namespace Js;
1192211923
SetHeadAndLastUsedSegment(dst);
1192311924
dst->CheckLengthvsSize();
1192411925

11925-
Assert(IsInlineSegment(src, instance) == IsInlineSegment(dst, static_cast<T*>(this)));
11926+
Assert(!IsInlineSegment(src, instance) || IsInlineSegment(dst, static_cast<T*>(this)));
1192611927

11927-
CopyArray(dst->elements, dst->size, src->elements, src->size);
11928+
CopyArray(dst->elements, dst->size, src->elements, sourceSize);
1192811929

1192911930
if (!deepCopy)
1193011931
{

0 commit comments

Comments
 (0)