diff options
| author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2023-01-03 15:01:19 +0000 |
|---|---|---|
| committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2023-08-07 15:18:58 +0100 |
| commit | deda7d330177ead49411da1005c9902430688094 (patch) | |
| tree | 5ed47c93bfbcb66cad510ee758353bf9a8d46ded | |
| parent | fb7f1a81274ecc3987739793caff47af8cd6eb27 (diff) | |
| download | rust-deda7d330177ead49411da1005c9902430688094.tar.gz rust-deda7d330177ead49411da1005c9902430688094.zip | |
std::process (windows): refactor Stdio::to_handle slightly
We're going to want to reuse this bit of code.
| -rw-r--r-- | library/std/src/sys/windows/process.rs | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/library/std/src/sys/windows/process.rs b/library/std/src/sys/windows/process.rs index e3493cbb850..4d92caee852 100644 --- a/library/std/src/sys/windows/process.rs +++ b/library/std/src/sys/windows/process.rs @@ -521,17 +521,18 @@ fn program_exists(path: &Path) -> Option<Vec<u16>> { impl Stdio { fn to_handle(&self, stdio_id: c::DWORD, pipe: &mut Option<AnonPipe>) -> io::Result<Handle> { - match *self { - Stdio::Inherit => match stdio::get_handle(stdio_id) { - Ok(io) => unsafe { - let io = Handle::from_raw_handle(io); - let ret = io.duplicate(0, true, c::DUPLICATE_SAME_ACCESS); - io.into_raw_handle(); - ret - }, - // If no stdio handle is available, then propagate the null value. - Err(..) => unsafe { Ok(Handle::from_raw_handle(ptr::null_mut())) }, + let use_stdio_id = |stdio_id| match stdio::get_handle(stdio_id) { + Ok(io) => unsafe { + let io = Handle::from_raw_handle(io); + let ret = io.duplicate(0, true, c::DUPLICATE_SAME_ACCESS); + io.into_raw_handle(); + ret }, + // If no stdio handle is available, then propagate the null value. + Err(..) => unsafe { Ok(Handle::from_raw_handle(ptr::null_mut())) }, + }; + match *self { + Stdio::Inherit => use_stdio_id(stdio_id), Stdio::MakePipe => { let ours_readable = stdio_id != c::STD_INPUT_HANDLE; |
