From d8860910f40f05aeb1064b6b14e4fd16dfcc7992 Mon Sep 17 00:00:00 2001 From: GNU Libc Maintainers Date: Mon, 21 Feb 2022 08:47:11 +0000 Subject: [PATCH] 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 --- stdio-common/errlist.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/stdio-common/errlist.c b/stdio-common/errlist.c index 928e966b5..d6f667e1a 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 -- 2.30.2