summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartijn Dekker <martijn@inlv.org>2018-03-07 13:03:26 +0000
committerHerbert Xu <herbert@gondor.apana.org.au>2018-03-10 16:01:43 +0800
commit2b3fb53c6940471955631353b8bdb7d5a4677fd1 (patch)
treec5471c418e9445ea84fd2b4ad35c01c5cdfc12ff
parentexpand: 'nolog' and 'debug' options cause "$-" to wreak havoc (diff)
downloaddash-2b3fb53c6940471955631353b8bdb7d5a4677fd1.tar.gz
dash-2b3fb53c6940471955631353b8bdb7d5a4677fd1.zip
mystring: fix "Illegal number" on FreeBSD & macOS for x=; echo $((x))
Op 07-03-18 om 06:26 schreef Herbert Xu:
> Martijn Dekker <martijn@inlv.org> wrote:
>>
>>> Since base is always a constant 0 or a constant 10, never a
>>> user-provided value, the only error that strtoimax will ever report on
>>> glibc systems is ERANGE. Checking only ERANGE therefore preserves the
>>> glibc behaviour, and allows the exact same set of errors to be detected
>>> on non-glibc systems.
>>
>> That makes sense, thanks.
>
> Could you resend your patch with this change please?

OK, see below.

- M.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--src/mystring.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mystring.c b/src/mystring.c
index 0106bd2..de624b8 100644
--- a/src/mystring.c
+++ b/src/mystring.c
@@ -125,7 +125,7 @@ intmax_t atomax(const char *s, int base)
 	errno = 0;
 	r = strtoimax(s, &p, base);
 
-	if (errno != 0)
+	if (errno == ERANGE)
 		badnum(s);
 
 	/*