diff options
Diffstat (limited to 'lib/curl_strerror.c')
-rw-r--r-- | lib/curl_strerror.c | 7 |
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'; |