aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/curl_strerror.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/curl_strerror.c b/lib/curl_strerror.c
index 0d4ecbef8..570759603 100644
--- a/lib/curl_strerror.c
+++ b/lib/curl_strerror.c
@@ -506,11 +506,18 @@ const char *Curl_strerror(struct connectdata *conn, int err)
if (err >= 0 && err < sys_nerr) {
/* These should be atomic and hopefully thread-safe */
#ifdef HAVE_STRERROR_R
+#ifdef HAVE_POSIX_STRERROR_R
strerror_r(err, buf, max);
/* this may set errno to ERANGE if insufficient storage was supplied via
strerrbuf and buflen to contain the generated message string, or EINVAL
if the value of errnum is not a valid error number.*/
#else
+ /* HAVE_GLIBC_STRERROR_R */
+ char buffer[256];
+ char *msg = strerror_r(err, buffer, sizeof(buffer));
+ strncpy(buf, msg, max);
+#endif
+#else
strncpy(buf, strerror(err), max);
#endif
*(buf+max) = '\0';