Rollup merge of #121554 - Enselic:sigaction, r=oli-obk
Don't unnecessarily change `SIGPIPE` disposition in `unix_sigpipe` tests In `auxiliary/sigpipe-utils.rs`, all we want to know is the current `SIGPIPE` disposition. We should not change it. So use `libc::sigaction` instead of `libc::signal`. That way we can also remove the code that restores it. Part of https://github.com/rust-lang/rust/issues/97889.
This commit is contained in:
commit
5bd909227d
@ -17,17 +17,17 @@ pub fn assert_sigpipe_handler(expected_handler: SignalHandler) {
|
||||
target_os = "android",
|
||||
)))]
|
||||
{
|
||||
let prev = unsafe { libc::signal(libc::SIGPIPE, libc::SIG_IGN) };
|
||||
let actual = unsafe {
|
||||
let mut actual: libc::sigaction = std::mem::zeroed();
|
||||
libc::sigaction(libc::SIGPIPE, std::ptr::null(), &mut actual);
|
||||
actual.sa_sigaction
|
||||
};
|
||||
|
||||
let expected = match expected_handler {
|
||||
SignalHandler::Ignore => libc::SIG_IGN,
|
||||
SignalHandler::Default => libc::SIG_DFL,
|
||||
};
|
||||
assert_eq!(prev, expected, "expected sigpipe value matches actual value");
|
||||
|
||||
// Unlikely to matter, but restore the old value anyway
|
||||
unsafe {
|
||||
libc::signal(libc::SIGPIPE, prev);
|
||||
};
|
||||
assert_eq!(actual, expected, "actual and expected SIGPIPE disposition differs");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user