summaryrefslogtreecommitdiffstats
path: root/modules/mono
diff options
context:
space:
mode:
authorZae <zaevi@live.com>2024-10-24 00:08:43 +0800
committerZae <zaevi@live.com>2024-10-24 00:08:43 +0800
commit06df5275c298137cebd7c1faf02f3e193a3464af (patch)
tree9943a628e958b1ff75bfb8fd7edb615244dcd516 /modules/mono
parent533c616cb86ff7bb940d58ffbbcc1a3eca0aa33d (diff)
downloadredot-engine-06df5275c298137cebd7c1faf02f3e193a3464af.tar.gz
C#: Fix StringName leak when converting `Variant` to `Signal` / `Callable`
Diffstat (limited to 'modules/mono')
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/NativeInterop/VariantUtils.cs10
1 files changed, 8 insertions, 2 deletions
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/NativeInterop/VariantUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/NativeInterop/VariantUtils.cs
index dc151e2c3e..222ded6895 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/NativeInterop/VariantUtils.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/NativeInterop/VariantUtils.cs
@@ -534,7 +534,10 @@ namespace Godot.NativeInterop
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Callable ConvertToCallable(in godot_variant p_var)
- => Marshaling.ConvertCallableToManaged(ConvertToNativeCallable(p_var));
+ {
+ using var callable = ConvertToNativeCallable(p_var);
+ return Marshaling.ConvertCallableToManaged(callable);
+ }
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static godot_signal ConvertToNativeSignal(in godot_variant p_var)
@@ -542,7 +545,10 @@ namespace Godot.NativeInterop
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Signal ConvertToSignal(in godot_variant p_var)
- => Marshaling.ConvertSignalToManaged(ConvertToNativeSignal(p_var));
+ {
+ using var signal = ConvertToNativeSignal(p_var);
+ return Marshaling.ConvertSignalToManaged(signal);
+ }
public static godot_array ConvertToNativeArray(in godot_variant p_var)
=> p_var.Type == Variant.Type.Array ?