}
{
/* Detect overflow. */
- uintmax_t new_t = 10 * tabval + *stops - '0';
- if (UINTMAX_MAX / 10 < tabval || new_t < tabval * 10)
+ if (DECIMAL_DIGIT_ACCUMULATE (tabval, *stops - '0', UINTMAX_MAX))
{
size_t len = strspn (num_start, "0123456789");
char *bad_num = xstrndup (num_start, len);
ok = false;
stops = num_start + len - 1;
}
- tabval = new_t;
}
}
else
have_tabval = true;
}
{
- uintmax_t new_t = tabval * 10 + c - '0';
- if (UINTMAX_MAX / 10 < tabval || new_t < tabval * 10)
+ if (DECIMAL_DIGIT_ACCUMULATE (tabval, c - '0', UINTMAX_MAX))
error (EXIT_FAILURE, 0, _("tab stop value is too large"));
- tabval = new_t;
}
obsolete_tablist = true;
break;