diff options
| author | Matt Diener <mattndiener@gmail.com> | 2023-06-30 10:46:42 -0400 |
|---|---|---|
| committer | Matt Diener <mattndiener@gmail.com> | 2023-06-30 17:26:43 -0400 |
| commit | 783facf60b3e20671499ab307a00321f36cf65d9 (patch) | |
| tree | 8c2c4a6bd972c388ffdec7709749cddf1cdb97c9 /modules/mono | |
| parent | 46424488edc341b65467ee7fd3ac423e4d49ad34 (diff) | |
| download | redot-engine-783facf60b3e20671499ab307a00321f36cf65d9.tar.gz | |
C# Fix deserialization of delegates that are 0-parameter overloads
Co-authored-by: Raul Santos <raulsntos@gmail.com>
Diffstat (limited to 'modules/mono')
| -rw-r--r-- | modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs index 5d03379430..6c2fb7374c 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs @@ -500,24 +500,17 @@ namespace Godot Type? returnType = hasReturn ? DeserializeType(reader) : typeof(void); int parametersCount = reader.ReadInt32(); + var parameterTypes = parametersCount == 0 ? Type.EmptyTypes : new Type[parametersCount]; - if (parametersCount > 0) + for (int i = 0; i < parametersCount; i++) { - var parameterTypes = new Type[parametersCount]; - - for (int i = 0; i < parametersCount; i++) - { - Type? parameterType = DeserializeType(reader); - if (parameterType == null) - return false; - parameterTypes[i] = parameterType; - } - - methodInfo = declaringType.GetMethod(methodName, (BindingFlags)flags, null, parameterTypes, null); - return methodInfo != null && methodInfo.ReturnType == returnType; + Type? parameterType = DeserializeType(reader); + if (parameterType == null) + return false; + parameterTypes[i] = parameterType; } - methodInfo = declaringType.GetMethod(methodName, (BindingFlags)flags); + methodInfo = declaringType.GetMethod(methodName, (BindingFlags)flags, null, parameterTypes, null); return methodInfo != null && methodInfo.ReturnType == returnType; } |
