From 24e47097af04c50da76077c24465f58409f8cf5d Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:48:18 +1000 Subject: [PATCH] fix possible leak --- src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs | 2 +- src/SharpIDE.Godot/NodeExtensions.cs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs b/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs index ab345c6..7591e24 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/CodeEditorPanel.cs @@ -20,7 +20,7 @@ public partial class CodeEditorPanel : MarginContainer public override void _Ready() { _tabContainer = GetNode("TabContainer"); - _tabContainer.RemoveChild(_tabContainer.GetChild(0)); // Remove the default tab + _tabContainer.RemoveChildAndQueueFree(_tabContainer.GetChild(0)); // Remove the default tab _tabContainer.TabClicked += OnTabClicked; var tabBar = _tabContainer.GetTabBar(); tabBar.TabCloseDisplayPolicy = TabBar.CloseButtonDisplayPolicy.ShowAlways; diff --git a/src/SharpIDE.Godot/NodeExtensions.cs b/src/SharpIDE.Godot/NodeExtensions.cs index 2bf96d7..59df6f1 100644 --- a/src/SharpIDE.Godot/NodeExtensions.cs +++ b/src/SharpIDE.Godot/NodeExtensions.cs @@ -43,6 +43,11 @@ public static class NodeExtensions child.QueueFree(); } } + public void RemoveChildAndQueueFree(Node child) + { + node.RemoveChild(child); + child.QueueFree(); + } public Task InvokeAsync(Func workItem) { var taskCompletionSource = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);