diff --git a/src/core/l-types.c b/src/core/l-types.c index 811cc5e8f3..cef578c194 100644 --- a/src/core/l-types.c +++ b/src/core/l-types.c @@ -365,11 +365,11 @@ bad_hex: Trap0(RE_INVALID_CHARS); } *bp = 0; - // Too many digits? + // Count number of digits len = (REBCNT)(bp - &buf[0]); if (neg) len--; - if (len > 19) return 0; if (len > 0) { + if (len > 19) return 0; // Too many digits // Convert, check, and return: errno = 0; n = CHR_TO_INT(buf); diff --git a/src/tests/units/make-test.r3 b/src/tests/units/make-test.r3 index 4e0986a22b..3fa7521985 100644 --- a/src/tests/units/make-test.r3 +++ b/src/tests/units/make-test.r3 @@ -103,6 +103,13 @@ Rebol [ --assert 0 = to integer! "0" --assert 0 = to integer! "00" --assert 0 = to integer! "00000000000" + --assert 0 = to integer! "-0" + --assert 0 = to integer! "-00" + --assert 0 = to integer! "-00000000000" + --assert 0 = to integer! "+0" + --assert 0 = to integer! "+00" + --assert 0 = to integer! "+00000000000" + --assert 0 = to integer! "000'000'000" ===end-group===