From 55cda57aa2efe89cee367f73fb4b0ce55a1c8c18 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?= Date: Tue, 30 Dec 2014 23:37:26 +0000 Subject: [PATCH] xstrtol: ensure errno is reset Since commit 3bf75404, on 26-09-1998, errno may not have been reset. Noticed with a spurious coreutils test failure on Darwin 14.0.0. * lib/xstrtol.c (__xstrtol): Always reset errno before returning. --- ChangeLog | 8 ++++++++ lib/xstrtol.c | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f660a4c558..4e75982bb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2014-12-30 Pádraig Brady + + xstrtol: ensure errno is reset + Since commit 3bf75404, on 26-09-1998, errno may not have been reset. + Noticed with a spurious coreutils test failure on Darwin 14.0.0. + + * lib/xstrtol.c (__xstrtol): Always reset errno before returning. + 2014-12-28 Paul Eggert utimens: fix dependency typo diff --git a/lib/xstrtol.c b/lib/xstrtol.c index 544a74aa1c..7ab864bb52 100644 --- a/lib/xstrtol.c +++ b/lib/xstrtol.c @@ -97,6 +97,8 @@ __xstrtol (const char *s, char **ptr, int strtol_base, p = (ptr ? ptr : &t_ptr); + errno = 0; + if (! TYPE_SIGNED (__strtol_t)) { const char *q = s; @@ -107,7 +109,6 @@ __xstrtol (const char *s, char **ptr, int strtol_base, return LONGINT_INVALID; } - errno = 0; tmp = __strtol (s, p, strtol_base); if (*p == s) -- 2.39.5