diff --git a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp index 19651b81bc..2bef9433df 100644 --- a/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp +++ b/src/CLR/CorLib/corlib_native_System_Reflection_MethodBase.cpp @@ -135,7 +135,10 @@ HRESULT Library_corlib_native_System_Reflection_MethodBase::Invoke___OBJECT__OBJ { if (mdR->retValDataType != DATATYPE_VOID) { - if (mdR->retValDataType < DATATYPE_I4) + // Types that need ChangeDataType: primitives and generic instances + bool needsTypeChange = (mdR->retValDataType < DATATYPE_I4 || mdR->retValDataType == DATATYPE_GENERICINST); + + if (needsTypeChange) { stack.TopValue().ChangeDataType(mdR->retValDataType); }