From 640e586251380ee8768c01118db56d2a42557693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 6 Jul 2022 23:45:39 +0200 Subject: [PATCH] gbacktrace: Handle case of strerror_r returning an int value As it's the case in FreeBSD and Mac OS X. --- glib/gbacktrace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/glib/gbacktrace.c b/glib/gbacktrace.c index ae4bdec0c..6f4604e1f 100644 --- a/glib/gbacktrace.c +++ b/glib/gbacktrace.c @@ -323,8 +323,13 @@ stack_trace_sigchld (int signum) static inline const char * get_strerror (char *buffer, gsize n) { -#ifdef HAVE_STRERROR_R +#if defined(STRERROR_R_CHAR_P) return strerror_r (errno, buffer, n); +#elif defined(HAVE_STRERROR_R) + int ret = strerror_r (errno, buffer, n); + if (ret == 0 || ret == EINVAL) + return buffer; + return NULL; #else const char *error_str = strerror (errno); if (!error_str)