]> git.lizzy.rs Git - rust.git/commit
process::unix: Handle other wait statuses in ExitStatus as Display
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Feb 2021 14:30:03 +0000 (14:30 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Feb 2021 18:15:42 +0000 (18:15 +0000)
commitfbd575aedf1a60ca5528d5be945639e02d44b3e7
tree4270508d0b9106f474b2ff8d5bc189613dd681a6
parent8a9f7862bcfa5870a34bb54f77a03c73d1db5c37
process::unix: Handle other wait statuses in ExitStatus as Display

Currently, on Nightly, this panics:

```
use std::process::ExitStatus;
use std::os::unix::process::ExitStatusExt;

fn main() {
    let st = ExitStatus::from_raw(0x007f);
    println!("st = {}", st);
}
```

This is because the impl of Display assumes that if .code() is None,
.signal() must be Some.  That was a false assumption, although it was
true with buggy code before
  5b1316f78152a9c066b357ea9addf803d48e114a
  unix ExitStatus: Do not treat WIFSTOPPED as WIFSIGNALED

This is not likely to have affected many people in practice, because
`Command` will never produce such a wait status (`ExitStatus`).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
library/std/src/sys/unix/process/process_unix.rs