summaryrefslogtreecommitdiffstats
path: root/modules/mono
diff options
context:
space:
mode:
authorMatt Diener <mattndiener@gmail.com>2023-06-30 10:46:42 -0400
committerMatt Diener <mattndiener@gmail.com>2023-06-30 17:26:43 -0400
commit783facf60b3e20671499ab307a00321f36cf65d9 (patch)
tree8c2c4a6bd972c388ffdec7709749cddf1cdb97c9 /modules/mono
parent46424488edc341b65467ee7fd3ac423e4d49ad34 (diff)
downloadredot-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.cs21
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;
}