parse-date: use uintmax_t where appropriate

Reported-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Influenced-by: gnulib 30784c4 Paul Eggert <eggert@cs.ucla.edu>
Signed-off-by: J William Piggott <elseifthen@gmx.com>
This commit is contained in:
J William Piggott 2017-05-16 15:05:55 -04:00
parent 75f8be9eb6
commit 07668cd1fa
1 changed files with 4 additions and 4 deletions

View File

@ -1061,7 +1061,7 @@ static int yylex (union YYSTYPE *lvalp, parser_control *pc)
if (c_isdigit (c) || c == '-' || c == '+') {
char const *p;
int sign;
unsigned long int value;
uintmax_t value;
if (c == '-' || c == '+') {
sign = c == '-' ? -1 : 1;
while (c = *++pc->input, c_isspace (c))
@ -1073,21 +1073,21 @@ static int yylex (union YYSTYPE *lvalp, parser_control *pc)
sign = 0;
p = pc->input;
for (value = 0; ; value *= 10) {
unsigned long int value1 = value + (c - '0');
uintmax_t value1 = value + (c - '0');
if (value1 < value)
return '?';
value = value1;
c = *++p;
if (! c_isdigit (c))
break;
if (ULONG_MAX / 10 < value)
if (UINTMAX_MAX / 10 < value)
return '?';
}
if ((c == '.' || c == ',') && c_isdigit (p[1])) {
time_t s;
int ns;
int digits;
unsigned long int value1;
uintmax_t value1;
/* Check for overflow when converting value to
* time_t.