ilang_lexer: fix check for out of range literal.

Commit ca70a104 did not use a correct check.
This commit is contained in:
whitequark 2020-05-18 03:18:42 +00:00
parent 0d99522b3c
commit 13b2963ded
1 changed files with 3 additions and 1 deletions

View File

@ -91,8 +91,10 @@ USING_YOSYS_NAMESPACE
[0-9]+'[01xzm-]* { rtlil_frontend_ilang_yylval.string = strdup(yytext); return TOK_VALUE; }
-?[0-9]+ {
char *end = nullptr;
errno = 0;
long value = strtol(yytext, &end, 10);
if (end != yytext + strlen(yytext))
log_assert(end == yytext + strlen(yytext));
if (errno == ERANGE)
return TOK_INVALID; // literal out of range of long
if (value < INT_MIN || value > INT_MAX)
return TOK_INVALID; // literal out of range of int (relevant mostly for LP64 platforms)