diff --git a/src/PSADTree/Commands/GetADTreeGroupMemberCommand.cs b/src/PSADTree/Commands/GetADTreeGroupMemberCommand.cs
index 9f35173..181a617 100644
--- a/src/PSADTree/Commands/GetADTreeGroupMemberCommand.cs
+++ b/src/PSADTree/Commands/GetADTreeGroupMemberCommand.cs
@@ -126,16 +126,22 @@ private void EnumerateMembers(
{
foreach (Principal member in searchResult.GetSortedEnumerable(_comparer))
{
+ IDisposable? disposable = null;
try
{
if (member is { DistinguishedName: null })
{
+ disposable = member;
continue;
}
- if (Group.IsPresent && member.StructuralObjectClass != "group")
+ if (member.StructuralObjectClass != "group")
{
- continue;
+ disposable = member;
+ if (Group.IsPresent)
+ {
+ continue;
+ }
}
TreeObjectBase treeObject = ProcessPrincipal(
@@ -151,7 +157,7 @@ private void EnumerateMembers(
}
finally
{
- member.Dispose();
+ disposable?.Dispose();
}
}
}
diff --git a/src/PSADTree/PSADTree.csproj b/src/PSADTree/PSADTree.csproj
index 55fd80f..4866383 100644
--- a/src/PSADTree/PSADTree.csproj
+++ b/src/PSADTree/PSADTree.csproj
@@ -13,16 +13,19 @@
$(DefineConstants);CORE
+
+
+
+
+
+
+
-
-
-
-
-
-
diff --git a/src/PSADTree/PSADTreeComparer.cs b/src/PSADTree/PSADTreeComparer.cs
index 0c99f89..29ace4e 100644
--- a/src/PSADTree/PSADTreeComparer.cs
+++ b/src/PSADTree/PSADTreeComparer.cs
@@ -3,6 +3,7 @@
namespace PSADTree;
+#pragma warning disable CS8767
internal sealed class PSADTreeComparer : IComparer
{
public int Compare(Principal lhs, Principal rhs) =>
diff --git a/src/PSADTree/TreeGroup.cs b/src/PSADTree/TreeGroup.cs
index 1a46860..32a34e0 100644
--- a/src/PSADTree/TreeGroup.cs
+++ b/src/PSADTree/TreeGroup.cs
@@ -1,6 +1,8 @@
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.DirectoryServices.AccountManagement;
+using System.Text;
namespace PSADTree;
@@ -14,6 +16,8 @@ public sealed class TreeGroup : TreeObjectBase
private const string _vtReset = "\x1B[0m";
+ private static readonly StringBuilder s_sb = new();
+
private List? _childs;
public ReadOnlyCollection Childs => new(_childs ??= []);
@@ -46,12 +50,13 @@ internal TreeGroup(
internal void SetCircularNested()
{
IsCircular = true;
- Hierarchy = string.Concat(
- Hierarchy.Insert(
- Hierarchy.IndexOf("─ ") + 2,
- _vtBrightRed),
- _isCircular,
- _vtReset);
+ Hierarchy = s_sb
+ .Append(Hierarchy.Insert(Hierarchy.IndexOf("─ ") + 2, _vtBrightRed))
+ .Append(_isCircular)
+ .Append(_vtReset)
+ .ToString();
+
+ s_sb.Clear();
}
internal void SetProcessed() => Hierarchy = string.Concat(Hierarchy, _isProcessed);