Skip to content

Commit 4fb7ef7

Browse files
committed
CreateArray now takes caller parameter
- Required to properly created array instance with generic type.
1 parent a252c7a commit 4fb7ef7

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

src/CLR/Core/CLR_RT_HeapBlock_Array.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance(
8686
CLR_RT_HeapBlock &reference,
8787
CLR_UINT32 length,
8888
CLR_RT_Assembly *assm,
89-
CLR_UINT32 tk)
89+
CLR_UINT32 tk,
90+
const CLR_RT_MethodDef_Instance *caller)
9091
{
9192
NATIVE_PROFILE_CLR_CORE();
9293
NANOCLR_HEADER();
@@ -97,7 +98,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance(
9798

9899
memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock));
99100

100-
if (cls.ResolveToken(tk, assm))
101+
if (cls.ResolveToken(tk, assm, caller))
101102
{
102103
ref.SetReflection(cls);
103104
}

src/CLR/Core/Interpreter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2846,7 +2846,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg)
28462846

28472847
for (int pass = 0; pass < 2; pass++)
28482848
{
2849-
hr = CLR_RT_HeapBlock_Array::CreateInstance(evalPos[0], size, assm, arg);
2849+
hr = CLR_RT_HeapBlock_Array::CreateInstance(evalPos[0], size, assm, arg, &stack->m_call);
28502850
if (SUCCEEDED(hr))
28512851
{
28522852
break;

src/CLR/Include/nanoCLR_Runtime__HeapBlock.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1838,7 +1838,12 @@ struct CLR_RT_HeapBlock_Array : public CLR_RT_HeapBlock
18381838
CLR_UINT32 length,
18391839
const CLR_RT_ReflectionDef_Index &reflex);
18401840
static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length, const CLR_RT_TypeDef_Index &cls);
1841-
static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length, CLR_RT_Assembly *assm, CLR_UINT32 tk);
1841+
static HRESULT CreateInstance(
1842+
CLR_RT_HeapBlock &reference,
1843+
CLR_UINT32 length,
1844+
CLR_RT_Assembly *assm,
1845+
CLR_UINT32 tk,
1846+
const CLR_RT_MethodDef_Instance *caller);
18421847

18431848
CLR_UINT8 *GetFirstElement()
18441849
{

0 commit comments

Comments
 (0)