From af67fb1f62d0ffc4e0b5c791eb9f04c107318d7f Mon Sep 17 00:00:00 2001 From: DE YU <71481700+Delsin-Yu@users.noreply.github.com> Date: Sun, 6 Apr 2025 16:02:35 +0800 Subject: [PATCH] Avoid array allocation when signal have 0 arg --- .../GodotSharp/GodotSharp/Core/SignalAwaiter.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs index a67f626d35..56227b8943 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/SignalAwaiter.cs @@ -48,12 +48,19 @@ namespace Godot awaiter._completed = true; - Variant[] signalArgs = new Variant[argCount]; + if (argCount > 0) + { + Variant[] signalArgs = new Variant[argCount]; - for (int i = 0; i < argCount; i++) - signalArgs[i] = Variant.CreateCopyingBorrowed(*args[i]); + for (int i = 0; i < argCount; i++) + signalArgs[i] = Variant.CreateCopyingBorrowed(*args[i]); - awaiter._result = signalArgs; + awaiter._result = signalArgs; + } + else + { + awaiter._result = []; + } awaiter._continuation?.Invoke(); }