From 81225f09d97977e59372d0d40e2bc4985b65eadf Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 16 Nov 2020 16:01:30 -0500 Subject: [PATCH] Special-case zero parameters in GetParameters --- .../src/System/Reflection/RuntimeParameterInfo.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs index 9fbf8f9c0837fd..77b2d5e8f5a7a3 100644 --- a/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs +++ b/src/coreclr/src/System.Private.CoreLib/src/System/Reflection/RuntimeParameterInfo.cs @@ -15,24 +15,26 @@ internal static ParameterInfo[] GetParameters(IRuntimeMethodInfo method, MemberI { Debug.Assert(method is RuntimeMethodInfo || method is RuntimeConstructorInfo); - return GetParameters(method, member, sig, out _, false); + return GetParameters(method, member, sig, out _, fetchReturnParameter: false); } internal static ParameterInfo GetReturnParameter(IRuntimeMethodInfo method, MemberInfo member, Signature sig) { Debug.Assert(method is RuntimeMethodInfo || method is RuntimeConstructorInfo); - ParameterInfo returnParameter; - GetParameters(method, member, sig, out returnParameter!, true); - return returnParameter; + GetParameters(method, member, sig, out ParameterInfo? returnParameter, fetchReturnParameter: true); + return returnParameter!; } - internal static ParameterInfo[] GetParameters( + private static ParameterInfo[] GetParameters( IRuntimeMethodInfo methodHandle, MemberInfo member, Signature sig, out ParameterInfo? returnParameter, bool fetchReturnParameter) { returnParameter = null; int sigArgCount = sig.Arguments.Length; - ParameterInfo[] args = fetchReturnParameter ? null! : new ParameterInfo[sigArgCount]; + ParameterInfo[] args = + fetchReturnParameter ? null! : + sigArgCount == 0 ? Array.Empty() : + new ParameterInfo[sigArgCount]; int tkMethodDef = RuntimeMethodHandle.GetMethodDef(methodHandle); int cParamDefs = 0;