Commit c51ab88
committed
Fix close method on child writer not closing
Fixes a bug where `child.stdin:close()` on a child process created by
`process.create()` did not actually close the `stdin`, this caused
processes which read from stdin until EOF to wait indefinitely.
On Unix, calling `close` on `async-process::ChildStdin` does not
actually close the underyling writer. This is due to it using
`async_io::Async` under the hood on Unix, whose `close` implementation
just flushes the underlying writer.
This has been fixed dropping the `ChildStdin` on close, which will close
the underlying writer. An existing test has been updated to catch this
bug.1 parent 43484f1 commit c51ab88
File tree
2 files changed
+12
-12
lines changed- crates/lune-std-process/src/create
- tests/process/create
2 files changed
+12
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
| 13 | + | |
17 | 14 | | |
18 | 15 | | |
19 | 16 | | |
20 | | - | |
21 | | - | |
22 | | - | |
| 17 | + | |
| 18 | + | |
23 | 19 | | |
| 20 | + | |
24 | 21 | | |
25 | 22 | | |
26 | 23 | | |
27 | | - | |
28 | | - | |
29 | | - | |
| 24 | + | |
| 25 | + | |
30 | 26 | | |
| 27 | + | |
31 | 28 | | |
32 | 29 | | |
33 | 30 | | |
34 | 31 | | |
35 | 32 | | |
36 | | - | |
| 33 | + | |
37 | 34 | | |
38 | 35 | | |
39 | 36 | | |
40 | 37 | | |
41 | 38 | | |
42 | | - | |
| 39 | + | |
43 | 40 | | |
44 | 41 | | |
45 | 42 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| |||
0 commit comments