diff --git a/src/Microsoft.VisualStudio.Threading/RarelyRemoveItemSet`1.cs b/src/Microsoft.VisualStudio.Threading/RarelyRemoveItemSet`1.cs index d1391f96..429c321f 100644 --- a/src/Microsoft.VisualStudio.Threading/RarelyRemoveItemSet`1.cs +++ b/src/Microsoft.VisualStudio.Threading/RarelyRemoveItemSet`1.cs @@ -205,7 +205,7 @@ public bool MoveNext() case IndexBeforeFirstArrayElement: this.currentIndex = 0; - return true; + return this.count > 0; } } diff --git a/test/Microsoft.VisualStudio.Threading.Tests/RarelyRemoveItemSetTests.cs b/test/Microsoft.VisualStudio.Threading.Tests/RarelyRemoveItemSetTests.cs index 54bd926a..fb4f79b1 100644 --- a/test/Microsoft.VisualStudio.Threading.Tests/RarelyRemoveItemSetTests.cs +++ b/test/Microsoft.VisualStudio.Threading.Tests/RarelyRemoveItemSetTests.cs @@ -127,6 +127,26 @@ public void RemoveFromTwoFIFO() Assert.Empty(this.list.ToArray()); } + [Fact] + public void RemoveFromTwoEnumeration() + { + var value1 = new GenericParameterHelper(1); + var value2 = new GenericParameterHelper(2); + this.list.Add(value1); + this.list.Add(value2); + + this.list.Remove(value1); + this.list.Remove(value2); + + int count = 0; + foreach (GenericParameterHelper item in this.list.EnumerateAndClear()) + { + count++; + } + + Assert.Equal(0, count); + } + [Fact] public void RemoveFromMultiple() {