Skip to content

Commit 641c611

Browse files
committed
Improve size computation for array objects
1 parent b4fce97 commit 641c611

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/CLR/Core/Interpreter.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3153,6 +3153,14 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg)
31533153
{
31543154
size = c_CLR_RT_DataTypeLookup[elemDT].m_sizeInBytes;
31553155
}
3156+
else if (
3157+
(expectedType.target->flags & CLR_RECORD_TYPEDEF::TD_Semantics_Mask) ==
3158+
CLR_RECORD_TYPEDEF::TD_Semantics_ValueType)
3159+
{
3160+
size =
3161+
(CLR_RT_HeapBlock::HB_Object_Fields_Offset + +expectedType.CrossReference().totalFields) *
3162+
sizeof(CLR_RT_HeapBlock);
3163+
}
31563164

31573165
// Store the value into the actual array buffer
31583166
NANOCLR_CHECK_HRESULT(evalPos[3].StoreToReference(evalPos[1], size));

0 commit comments

Comments
 (0)