diff --git a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp index 7190963a25..ff5dd4a5e7 100644 --- a/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp +++ b/src/CLR/Core/CLR_RT_HeapBlock_Array.cpp @@ -86,7 +86,8 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( CLR_RT_HeapBlock &reference, CLR_UINT32 length, CLR_RT_Assembly *assm, - CLR_UINT32 tk) + CLR_UINT32 tk, + const CLR_RT_MethodDef_Instance *caller) { NATIVE_PROFILE_CLR_CORE(); NANOCLR_HEADER(); @@ -97,7 +98,7 @@ HRESULT CLR_RT_HeapBlock_Array::CreateInstance( memset(&ref, 0, sizeof(struct CLR_RT_HeapBlock)); - if (cls.ResolveToken(tk, assm)) + if (cls.ResolveToken(tk, assm, caller)) { ref.SetReflection(cls); } diff --git a/src/CLR/Core/Interpreter.cpp b/src/CLR/Core/Interpreter.cpp index 923fface93..c2eb8fc67c 100644 --- a/src/CLR/Core/Interpreter.cpp +++ b/src/CLR/Core/Interpreter.cpp @@ -2851,7 +2851,7 @@ HRESULT CLR_RT_Thread::Execute_IL(CLR_RT_StackFrame &stackArg) for (int pass = 0; pass < 2; pass++) { - hr = CLR_RT_HeapBlock_Array::CreateInstance(evalPos[0], size, assm, arg); + hr = CLR_RT_HeapBlock_Array::CreateInstance(evalPos[0], size, assm, arg, &stack->m_call); if (SUCCEEDED(hr)) { break; diff --git a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h index 1159922cd3..778ab87287 100644 --- a/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h +++ b/src/CLR/Include/nanoCLR_Runtime__HeapBlock.h @@ -1839,7 +1839,12 @@ struct CLR_RT_HeapBlock_Array : public CLR_RT_HeapBlock CLR_UINT32 length, const CLR_RT_ReflectionDef_Index &reflex); static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length, const CLR_RT_TypeDef_Index &cls); - static HRESULT CreateInstance(CLR_RT_HeapBlock &reference, CLR_UINT32 length, CLR_RT_Assembly *assm, CLR_UINT32 tk); + static HRESULT CreateInstance( + CLR_RT_HeapBlock &reference, + CLR_UINT32 length, + CLR_RT_Assembly *assm, + CLR_UINT32 tk, + const CLR_RT_MethodDef_Instance *caller); CLR_UINT8 *GetFirstElement() {