From 7690cbfd81df8df2fb4065ae9cc89144474796bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Sat, 5 Aug 2023 18:03:46 +0200 Subject: [PATCH] fix: handle the GNU specific version of strerror_r --- Zend/zend.c | 12 +++++++++--- configure.ac | 4 +++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Zend/zend.c b/Zend/zend.c index a1b4e3ee39730..351e9ac5eea75 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -1649,9 +1649,15 @@ ZEND_API ZEND_COLD ZEND_NORETURN void zend_error_noreturn(int type, const char * ZEND_API ZEND_COLD ZEND_NORETURN void zend_strerror_noreturn(int type, int errn, const char *message) { -#ifdef HAVE_STR_ERROR_R - char buf[1024]; - strerror_r(errn, buf, sizeof(buf)); +#ifdef HAVE_STRERROR_R + char b[1024]; + +# ifdef STRERROR_R_CHAR_P + char *buf = strerror_r(errn, b, sizeof(b)); +# else + strerror_r(errn, b, sizeof(b)); + char *buf = b; +# endif #else char *buf = strerror(errn); #endif diff --git a/configure.ac b/configure.ac index 6cf6370fca3b8..6d6d44e0597c4 100644 --- a/configure.ac +++ b/configure.ac @@ -621,9 +621,11 @@ vasprintf \ asprintf \ nanosleep \ memmem \ -strerror_r \ ) +dnl Check for strerror_r, and if its a POSIX-compatible or a GNU specific version. +AC_FUNC_STRERROR_R + AX_FUNC_WHICH_GETHOSTBYNAME_R dnl Some systems (like OpenSolaris) do not have nanosleep in libc.