We have forever loop in DotNetty.Transport.Channels.Groups.CombinedEnumerator.MoveNext() because in .NET 8
an empty ReadOnlyCollection<T> returns a singleton empty enumerator (dotnet/runtime#76097).
So there could be two identical enumerators here:
|
readonly IEnumerator<T> e1; |
|
readonly IEnumerator<T> e2; |
Which leads to an endless loop here:
|
for (;;) |
|
{ |
|
if (this.currentEnumerator.MoveNext()) |
|
{ |
|
return true; |
|
} |
|
if (this.currentEnumerator == this.e1) |
|
{ |
|
this.currentEnumerator = this.e2; |
|
} |
|
else |
|
{ |
|
return false; |
|
} |
|
} |
We have forever loop in
DotNetty.Transport.Channels.Groups.CombinedEnumerator.MoveNext()because in .NET 8an empty
ReadOnlyCollection<T>returns a singleton empty enumerator (dotnet/runtime#76097).So there could be two identical enumerators here:
DotNetty/src/DotNetty.Transport/Channels/Groups/CombinedEnumerator.cs
Lines 12 to 13 in 78c5757
Which leads to an endless loop here:
DotNetty/src/DotNetty.Transport/Channels/Groups/CombinedEnumerator.cs
Lines 33 to 47 in 78c5757