zsh: fix sigsuspend probe under autoconf 2.73 / C23

autoconf 2.73 makes AC_PROG_CC pick -std=gnu23, which rejects the K&R
handler in the zsh_cv_sys_sigsuspend probe. The compile failure flips
the probe to "no", defines BROKEN_POSIX_SIGSUSPEND, and the resulting
racy pause() fallback hangs $(...) on a lost SIGCHLD.

Upstream dropped the probe in 8dd271fdec52; that does not apply on 5.9
with the PCRE backports here, so just prototype the handler.

Fixes #513543
Fixes #513019
This commit is contained in:
Jörg Thalheim
2026-04-27 12:06:25 +02:00
parent c3f6396eea
commit 19b2d2acef
2 changed files with 20 additions and 0 deletions
@@ -0,0 +1,17 @@
Prototype the K&R handler so the probe still compiles under -std=gnu23
(selected by autoconf 2.73). Upstream removed the probe in 8dd271fdec52,
which does not apply against 5.9 with the PCRE backports.
https://github.com/NixOS/nixpkgs/issues/513543
--- a/configure.ac
+++ b/configure.ac
@@ -2334,8 +2334,7 @@ if test x$signals_style = xPOSIX_SIGNALS; then
#include <signal.h>
#include <unistd.h>
int child=0;
-void handler(sig)
- int sig;
+void handler(int sig)
{if(sig==SIGCHLD) child=1;}
int main() {
struct sigaction act;
+3
View File
@@ -63,6 +63,9 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-bl1PG9Zk1wK+2mfbCBhD3OEpP8HQboqEO8sLFqX8DmA=";
excludes = [ "ChangeLog" ];
})
# autoconf 2.73 picks -std=gnu23, breaking the K&R sigsuspend probe and
# causing $(...) hangs. Drop with the next zsh release.
./fix-sigsuspend-probe-c23.patch
]
++ lib.optionals stdenv.cc.isGNU [
# Fixes compilation with gcc >= 14.