diff options
author | Jim Meyering <meyering@redhat.com> | 2011-05-25 12:29:18 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2011-05-26 22:13:37 +0200 |
commit | 419b6c9d42ba643265f802cd150d0b232e43186a (patch) | |
tree | 993d42ce541942f5863de308c98ff773cf29ab32 | |
parent | d7e23652039b5e145ab0d809a7de75ebb3facc24 (diff) | |
download | coreutils-419b6c9d42ba643265f802cd150d0b232e43186a.tar.xz |
maint: accommodate gcc's -Wstrict-overflow option
* src/factor.c (factor_using_pollard_rho): Change type of "i"
to unsigned to avoid warning from gcc's -Wstrict-overflow.
* src/expr.c: Use an unsigned intermediate.
* src/dircolors.c (main): Reorder operations to avoid the risk of
pointer overflow.
* src/tr.c (squeeze_filter): Change NOT_A_CHAR from an anonymous
"enum" to an "int", to avoid this warning:
tr.c:1624:10: error: assuming signed overflow does not occur when
simplifying conditional to constant [-Werror=strict-overflow]
* src/pr.c (main): Make index "i" unsigned.
-rw-r--r-- | src/dircolors.c | 2 | ||||
-rw-r--r-- | src/expr.c | 8 | ||||
-rw-r--r-- | src/factor.c | 3 | ||||
-rw-r--r-- | src/pr.c | 2 | ||||
-rw-r--r-- | src/tr.c | 2 |
5 files changed, 10 insertions, 7 deletions
diff --git a/src/dircolors.c b/src/dircolors.c index d1962eae9..9aaa87fc2 100644 --- a/src/dircolors.c +++ b/src/dircolors.c @@ -456,7 +456,7 @@ to select a shell syntax are mutually exclusive")); if (print_database) { char const *p = G_line; - while (p < G_line + sizeof G_line) + while (p - G_line < sizeof G_line) { puts (p); p += strlen (p) + 1; diff --git a/src/expr.c b/src/expr.c index ce65ecf46..2331f64fe 100644 --- a/src/expr.c +++ b/src/expr.c @@ -312,15 +312,17 @@ main (int argc, char **argv) parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE_NAME, VERSION, usage, AUTHORS, (char const *) NULL); + /* The above handles --help and --version. Since there is no other invocation of getopt, handle `--' here. */ - if (argc > 1 && STREQ (argv[1], "--")) + unsigned int u_argc = argc; + if (1 < u_argc && STREQ (argv[1], "--")) { - --argc; + --u_argc; ++argv; } - if (argc <= 1) + if (u_argc <= 1) { error (0, 0, _("missing operand")); usage (EXPR_INVALID); diff --git a/src/factor.c b/src/factor.c index 3354a4d5b..27843201c 100644 --- a/src/factor.c +++ b/src/factor.c @@ -160,7 +160,7 @@ factor_using_pollard_rho (mpz_t n, int a_int) mpz_t a; mpz_t g; mpz_t t1, t2; - int k, l, c, i; + int k, l, c; debug ("[pollard-rho (%d)] ", a_int); @@ -204,6 +204,7 @@ S2: mpz_set (x1, x); k = l; l = 2 * l; + unsigned int i; for (i = 0; i < k; i++) { mpz_mul (x, x, x); mpz_add (x, x, a); mpz_mod (x, x, n); @@ -1165,7 +1165,7 @@ main (int argc, char **argv) print_files (n_files, file_names); else { - int i; + unsigned int i; for (i = 0; i < n_files; i++) print_files (1, &file_names[i]); } @@ -1555,7 +1555,7 @@ squeeze_filter (char *buf, size_t size, size_t (*reader) (char *, size_t)) { /* A value distinct from any character that may have been stored in a buffer as the result of a block-read in the function squeeze_filter. */ - enum { NOT_A_CHAR = CHAR_MAX + 1 }; + const int NOT_A_CHAR = INT_MAX; int char_to_squeeze = NOT_A_CHAR; size_t i = 0; |