diff --git a/Dalamud/Game/ClientState/Buddy/BuddyList.cs b/Dalamud/Game/ClientState/Buddy/BuddyList.cs
index 84cfd24a3..71121e54e 100644
--- a/Dalamud/Game/ClientState/Buddy/BuddyList.cs
+++ b/Dalamud/Game/ClientState/Buddy/BuddyList.cs
@@ -130,12 +130,35 @@ internal sealed partial class BuddyList
///
public IEnumerator GetEnumerator()
{
- for (var i = 0; i < this.Length; i++)
- {
- yield return this[i];
- }
+ return new Enumerator(this);
}
///
IEnumerator IEnumerable.GetEnumerator() => this.GetEnumerator();
+
+ private struct Enumerator(BuddyList buddyList) : IEnumerator
+ {
+ private int index = 0;
+
+ public IBuddyMember Current { get; private set; }
+
+ object IEnumerator.Current => this.Current;
+
+ public bool MoveNext()
+ {
+ if (this.index == buddyList.Length) return false;
+ this.Current = buddyList[this.index];
+ this.index++;
+ return true;
+ }
+
+ public void Reset()
+ {
+ this.index = 0;
+ }
+
+ public void Dispose()
+ {
+ }
+ }
}