From: GNU Libc Maintainers Date: Sun, 19 Sep 2021 18:46:59 +0000 (+0100) Subject: git-get_errlist X-Git-Tag: archive/raspbian/2.32-4+rpi1~1^2~76 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6d09224cc05543fe6c2ff73e5d345709bcde95e2;p=glibc.git git-get_errlist Committed for 2.35 commit 5eb3e2c794c3fdd553833af5342740051221479c Author: Samuel Thibault Date: Mon Aug 23 19:06:49 2021 +0200 hurd: Fix errlist error mapping On the Hurd, the errno values don't start at 0, so _sys_errlist_internal needs index remapping. The _sys_errlist_internal definition already properly uses ERR_MAP, but __get_errlist and __get_errname were not. Gbp-Pq: Topic hurd-i386 Gbp-Pq: Name git-get_errlist.diff --- diff --git a/stdio-common/errlist.c b/stdio-common/errlist.c index 2ecf12167..2454a02c4 100644 --- a/stdio-common/errlist.c +++ b/stdio-common/errlist.c @@ -34,8 +34,9 @@ const char *const _sys_errlist_internal[] = const char * __get_errlist (int errnum) { - if (errnum >= 0 && errnum < array_length (_sys_errlist_internal)) - return _sys_errlist_internal[errnum]; + int mapped = ERR_MAP (errnum); + if (mapped >= 0 && mapped < array_length (_sys_errlist_internal)) + return _sys_errlist_internal[mapped]; return NULL; } @@ -67,10 +68,11 @@ static const unsigned short _sys_errnameidx[] = const char * __get_errname (int errnum) { - if (errnum < 0 || errnum >= array_length (_sys_errnameidx) - || (errnum > 0 && _sys_errnameidx[errnum] == 0)) + int mapped = ERR_MAP (errnum); + if (mapped < 0 || mapped >= array_length (_sys_errnameidx) + || (mapped > 0 && _sys_errnameidx[mapped] == 0)) return NULL; - return _sys_errname.str + _sys_errnameidx[errnum]; + return _sys_errname.str + _sys_errnameidx[mapped]; } #include