From 26a26f230435071d6eebe6ce7bc520d6680677b2 Mon Sep 17 00:00:00 2001 From: Jean Guyomarc'h Date: Mon, 22 Aug 2016 14:06:47 +0200 Subject: [PATCH] eina: fix use of strerror_r() So, first, the wrong strerror_r() was detected on Mac OS X. Instead of using a complex set of macros to try to detect which strerror_r() to use, when it is defined, let the autotools handle that clerverness for us. --- configure.ac | 1 + src/lib/eina/eina_error.c | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index df9131060d..a6414c6b4f 100644 --- a/configure.ac +++ b/configure.ac @@ -650,6 +650,7 @@ pause \ AC_FUNC_ALLOCA AC_FUNC_MMAP +AC_FUNC_STRERROR_R EFL_CHECK_FUNCS([EFLALL], [fnmatch gettimeofday dirfd fcntl sched_getcpu]) diff --git a/src/lib/eina/eina_error.c b/src/lib/eina/eina_error.c index 85cf708502..3e09f070cd 100644 --- a/src/lib/eina/eina_error.c +++ b/src/lib/eina/eina_error.c @@ -312,16 +312,17 @@ eina_error_msg_get(Eina_Error error) if (!msg) { char buf[256] = ""; - const char *str; + const char *str = NULL; -#if (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE +#ifdef HAVE_STRERROR_R +# ifndef STRERROR_R_CHAR_P if (strerror_r(error, buf, sizeof(buf)) == 0) /* XSI */ str = buf; - else - str = NULL; -#else +# else /* STRERROR_R_CHAR_P */ str = strerror_r(error, buf, sizeof(buf)); /* GNU */ -#endif +# endif /* ! STRERROR_R_CHAR_P */ +#endif /* HAVE_STRERROR_R */ + if (!str) EINA_SAFETY_ERROR("strerror_r() failed"); else