|
1 | | -diff --git a/Sources/NIOCore/AsyncSequences/NIOAsyncWriter.swift b/Sources/NIOCore/AsyncSequences/NIOAsyncWriter.swift |
2 | | -index badc34f967..f232d518f9 100644 |
3 | | ---- a/Sources/NIOCore/AsyncSequences/NIOAsyncWriter.swift |
4 | | -+++ b/Sources/NIOCore/AsyncSequences/NIOAsyncWriter.swift |
5 | | -@@ -1173,7 +1173,38 @@ extension NIOAsyncWriter { |
6 | | - delegate: delegate |
7 | | - ) |
8 | | - |
9 | | -- case .initial, .finished, .writerFinished: |
10 | | -+ case .writerFinished( |
11 | | -+ let isWritable, |
12 | | -+ let inDelegateOutcall, |
13 | | -+ var suspendedYields, |
14 | | -+ let cancelledYields, |
15 | | -+ let bufferedYieldIDs, |
16 | | -+ let delegate, |
17 | | -+ let error |
18 | | -+ ): |
19 | | -+ // We have a suspended yield at this point that hasn't been cancelled yet. |
20 | | -+ // It was buffered before we became finished, so we still have to deliver it. |
21 | | -+ // We need to store the yield now. |
22 | | -+ |
23 | | -+ self._state = .modifying |
24 | | -+ |
25 | | -+ let suspendedYield = SuspendedYield( |
26 | | -+ yieldID: yieldID, |
27 | | -+ continuation: continuation |
28 | | -+ ) |
29 | | -+ suspendedYields.append(suspendedYield) |
30 | | -+ |
31 | | -+ self._state = .writerFinished( |
32 | | -+ isWritable: isWritable, |
33 | | -+ inDelegateOutcall: inDelegateOutcall, |
34 | | -+ suspendedYields: suspendedYields, |
35 | | -+ cancelledYields: cancelledYields, |
36 | | -+ bufferedYieldIDs: bufferedYieldIDs, |
37 | | -+ delegate: delegate, |
38 | | -+ error: error |
39 | | -+ ) |
40 | | -+ |
41 | | -+ case .initial, .finished: |
42 | | - preconditionFailure("This should have already been handled by `yield()`") |
43 | | - |
44 | | - case .modifying: |
45 | | -@@ -1501,7 +1532,7 @@ extension NIOAsyncWriter { |
46 | | - |
47 | | - self._state = .writerFinished( |
48 | | - isWritable: isWritable, |
49 | | -- inDelegateOutcall: inDelegateOutcall, |
50 | | -+ inDelegateOutcall: false, |
51 | | - suspendedYields: .init(), |
52 | | - cancelledYields: cancelledYields, |
53 | | - bufferedYieldIDs: bufferedYieldIDs, |
54 | 1 | diff --git a/Tests/NIOCoreTests/AsyncSequences/NIOAsyncWriterTests.swift b/Tests/NIOCoreTests/AsyncSequences/NIOAsyncWriterTests.swift |
55 | 2 | index 31c680b8bf..4f15ac9af9 100644 |
56 | 3 | --- a/Tests/NIOCoreTests/AsyncSequences/NIOAsyncWriterTests.swift |
|
0 commit comments