From 4d956308034df1849bc16381a3639876603ef107 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Mon, 23 May 2011 20:43:06 +0000 Subject: [PATCH] strerror: match recent glibc changes * errno.cc (strerror): Print unknown errno as int. (__xpg_strerror_r): Likewise, and don't clobber strerror buffer. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/errno.cc | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index cb051bf6d..35b7eea7e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2011-05-23 Eric Blake + + * errno.cc (strerror): Print unknown errno as int. + (__xpg_strerror_r): Likewise, and don't clobber strerror buffer. + 2011-05-23 Corinna Vinschen * fhandler_process.cc (thread_info::fill_if_match): Reformat. diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc index e881fc649..aa311b7e2 100644 --- a/winsup/cygwin/errno.cc +++ b/winsup/cygwin/errno.cc @@ -382,8 +382,8 @@ strerror (int errnum) char *errstr = strerror_worker (errnum); if (!errstr) { - __small_sprintf (errstr = _my_tls.locals.strerror_buf, "Unknown error %u", - (unsigned) errnum); + __small_sprintf (errstr = _my_tls.locals.strerror_buf, "Unknown error %d", + errnum); errno = _impure_ptr->_errno = EINVAL; } return errstr; @@ -409,10 +409,10 @@ __xpg_strerror_r (int errnum, char *buf, size_t n) return ERANGE; int result = 0; char *error = strerror_worker (errnum); + char tmp[sizeof "Unknown error -2147483648"]; if (!error) { - __small_sprintf (error = _my_tls.locals.strerror_buf, "Unknown error %u", - (unsigned) errnum); + __small_sprintf (error = tmp, "Unknown error %d", errnum); result = EINVAL; } if (strlen (error) >= n)