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);