From 790829aa4f7613e281b4160abfe2f520aadd1b27 Mon Sep 17 00:00:00 2001 From: Shixin Zeng Date: Wed, 20 Aug 2014 11:24:05 -0400 Subject: [PATCH] Check overflow in integer literals Make this: >> 9'999'999'999'999'999'999 == 9223372036854775807 become: >> 9'999'999'999'999'999'999 ** Syntax error: invalid "integer" -- "9'999'999'999'999'999'999" ** Near: (line 1) 9'999'999'999'999'999'999 https://github.com/zsx/r3/issues/8 --- src/core/l-types.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/l-types.c b/src/core/l-types.c index 4436f13e18..4cc33bb87d 100644 --- a/src/core/l-types.c +++ b/src/core/l-types.c @@ -335,7 +335,9 @@ bad_hex: Trap0(RE_INVALID_CHARS); if (len > 19) return 0; // Convert, check, and return: + errno = 0; n = CHR_TO_INT(buf); + if (errno != 0) return 0; //overflow if ((n > 0 && neg) || (n < 0 && !neg)) return 0; SET_INTEGER(value, n); return cp;