(parse_tab_stops, main): Use DECIMAL_DIGIT_ACCUMULATE macro in
authorJim Meyering <jim@meyering.net>
Thu, 17 Mar 2005 15:30:00 +0000 (15:30 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 17 Mar 2005 15:30:00 +0000 (15:30 +0000)
place of nearly-equivalent code.

src/expand.c

index 5ea16c0..4f57c60 100644 (file)
@@ -172,8 +172,7 @@ parse_tab_stops (char const *stops)
            }
          {
            /* 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);
@@ -182,7 +181,6 @@ parse_tab_stops (char const *stops)
                ok = false;
                stops = num_start + len - 1;
              }
-           tabval = new_t;
          }
        }
       else
@@ -421,10 +419,8 @@ main (int argc, char **argv)
              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;