Building with a recent gcc-7 failed, so I wrote the attached patch. I
think we'll never have 2^31 command line arguments, so "unsigned int"
will ll be ok:

    maint: avoid md5sum.c warning from bleeding-edge gcc's -Wstrict-overflow

    Avoid this warning/error from gcc:
      src/md5sum.c:870:3: error: assuming signed overflow does not occur \
      when simplifying conditional to constant [-Werror=strict-overflow]
    * src/md5sum.c (main): Use an unsigned variable as the loop index,
    rather than optind.
From 8912aa7c6dc7acb76d2de648e89098943bfe149a Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email protected]>
Date: Wed, 22 Jun 2016 07:18:16 -0700
Subject: [PATCH] maint: avoid md5sum.c warning from bleeding-edge gcc's
 -Wstrict-overflow

Avoid this warning/error from gcc:
  src/md5sum.c:870:3: error: assuming signed overflow does not occur \
  when simplifying conditional to constant [-Werror=strict-overflow]
* src/md5sum.c (main): Use an unsigned variable as the loop index,
rather than optind.
---
 src/md5sum.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/md5sum.c b/src/md5sum.c
index 39132e3..fa2840b 100644
--- a/src/md5sum.c
+++ b/src/md5sum.c
@@ -867,9 +867,9 @@ main (int argc, char **argv)
   if (optind == argc)
     argv[argc++] = bad_cast ("-");

-  for (; optind < argc; ++optind)
+  for (unsigned int j = optind; j < argc; ++j)
     {
-      char *file = argv[optind];
+      char *file = argv[j];

       if (do_check)
         ok &= digest_check (file);
-- 
2.8.0-rc2

Reply via email to