From: Ulrich Drepper Date: Sat, 25 Dec 2010 18:56:48 +0000 (-0500) Subject: Change XPG-compliant strerror_r function to return error code. X-Git-Tag: upstream/2.30~12599 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98727dbea212799beb7a15eeb9a21c8c5d100267;p=external%2Fglibc.git Change XPG-compliant strerror_r function to return error code. --- diff --git a/ChangeLog b/ChangeLog index 497de67..c29dd53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-12-25 Ulrich Drepper + + [BZ #12204] + * string/xpg-strerror.c (__xpg_strerror_r): Return error code, not -1. + * sysdeps/mach/xpg-strerror.c (__xpg_strerror_r): Likewise. + 2010-12-15 H.J. Lu * config.h.in (NO_CTORS_DTORS_SECTIONS): Define. diff --git a/string/xpg-strerror.c b/string/xpg-strerror.c index 5cb56cd..8d89812 100644 --- a/string/xpg-strerror.c +++ b/string/xpg-strerror.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2004 +/* Copyright (C) 1991, 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2004, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -39,18 +39,13 @@ __xpg_strerror_r (int errnum, char *buf, size_t buflen) { if (errnum < 0 || errnum >= _sys_nerr_internal || _sys_errlist_internal[errnum] == NULL) - { - __set_errno (EINVAL); - return -1; - } + return EINVAL; + const char *estr = (const char *) _(_sys_errlist_internal[errnum]); size_t estrlen = strlen (estr) + 1; if (buflen < estrlen) - { - __set_errno (ERANGE); - return -1; - } + return ERANGE; memcpy (buf, estr, estrlen); return 0; diff --git a/sysdeps/mach/xpg-strerror.c b/sysdeps/mach/xpg-strerror.c index 8d0b31e..efaf0be 100644 --- a/sysdeps/mach/xpg-strerror.c +++ b/sysdeps/mach/xpg-strerror.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2004 +/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2004, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -53,30 +53,21 @@ __xpg_strerror_r (int errnum, char *buf, size_t buflen) code = err_get_code (errnum); if (system > err_max_system || ! __mach_error_systems[system].bad_sub) - { - __set_errno (EINVAL); - return -1; - } + return EINVAL; es = &__mach_error_systems[system]; if (sub >= es->max_sub) estr = (const char *) es->bad_sub; else if (code >= es->subsystem[sub].max_code) - { - __set_errno (EINVAL); - return -1; - } + return EINVAL; else estr = (const char *) _(es->subsystem[sub].codes[code]); size_t estrlen = strlen (estr) + 1; if (buflen < estrlen) - { - __set_errno (ERANGE); - return -1; - } + return ERANGE; memcpy (buf, estr, estrlen); return 0;