Fix System.Text.Json IAsyncEnumerator disposal on cancellation (#57505)
authorEirik Tsarpalis <eirik.tsarpalis@gmail.com>
Tue, 17 Aug 2021 10:16:27 +0000 (11:16 +0100)
committerGitHub <noreply@github.com>
Tue, 17 Aug 2021 10:16:27 +0000 (11:16 +0100)
commit61075fbe0d25668b4fa98aa80c2d6c004cf70afd
tree8009e5a620d0c2e6b985c0b8fb6f716eba3abaf4
parent9b93ac64e4f38e1f27ff5a243783f37518a9d8f4
Fix System.Text.Json IAsyncEnumerator disposal on cancellation (#57505)

* Ensure WriteStack.Pending task is awaited on exception. Ensure IAsyncDisposable instances are disposed exactly once.

Fixes #57360.

* Update src/libraries/System.Text.Json/tests/Common/CollectionTests/CollectionTests.AsyncEnumerable.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Collection/IAsyncEnumerableOfTConverter.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.Stream.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/WriteStack.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/WriteStackFrame.cs
src/libraries/System.Text.Json/tests/Common/CollectionTests/CollectionTests.AsyncEnumerable.cs