Commit 19b2d2ac authored by Jörg Thalheim's avatar Jörg Thalheim
Browse files

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
parent c3f6396e
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
@@ -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.