diff options
author | Jim Meyering <jim@meyering.net> | 2018-04-06 17:17:11 -0700 |
---|---|---|
committer | Andreas Gruenbacher <agruen@gnu.org> | 2018-04-07 09:58:05 +0200 |
commit | ae81be0024ea4eaf139b7ba57e9a8ce9e4a163ec (patch) | |
tree | 109326aa2c098c4094dcbe14eb50d212b3997748 | |
parent | 2a32bf09f5e9572da4be183bb0dbde8164351474 (diff) | |
download | patch-ae81be0024ea4eaf139b7ba57e9a8ce9e4a163ec.tar.gz |
maint: avoid warnings from GCC8
Hi Andreas,
I configured with --enable-gcc-warnings and bleeding-edge gcc
(version 8.0.1 20180406) and hit some warning-escalated-to-errors.
This fixes them:
>From a71ddb200dbe7ac0f9258796b5a51979b2740e88 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@fb.com>
Date: Fri, 6 Apr 2018 16:47:00 -0700
Subject: [PATCH] maint: avoid warnings from GCC8
* src/common.h (FALLTHROUGH): Define.
* src/patch.c (abort_hunk_context): Use FALLTHROUGH macro in place of
a comment. This avoids a warning from -Wimplicit-fallthrough=.
* src/pch.c (do_ed_script): Add otherwise unnecessary initialization
to avoid warning from -Wmaybe-uninitialized.
(another_hunk): Use FALLTHROUGH macro here, too, twice.
-rw-r--r-- | src/common.h | 8 | ||||
-rw-r--r-- | src/patch.c | 2 | ||||
-rw-r--r-- | src/pch.c | 7 |
3 files changed, 12 insertions, 5 deletions
diff --git a/src/common.h b/src/common.h index ec50b40..904a3f8 100644 --- a/src/common.h +++ b/src/common.h @@ -218,3 +218,11 @@ bool merge_hunk (int hunk, struct outstate *, lin where, bool *); #else # define merge_hunk(hunk, outstate, where, somefailed) false #endif + +#ifndef FALLTHROUGH +# if __GNUC__ < 7 +# define FALLTHROUGH ((void) 0) +# else +# define FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +#endif diff --git a/src/patch.c b/src/patch.c index 0fe6d72..1ae91d9 100644 --- a/src/patch.c +++ b/src/patch.c @@ -1381,7 +1381,7 @@ abort_hunk_context (bool header, bool reverse) break; case ' ': case '-': case '+': case '!': fprintf (rejfp, "%c ", pch_char (i)); - /* fall into */ + FALLTHROUGH; case '\n': pch_write_line (i, rejfp); break; @@ -1735,7 +1735,7 @@ another_hunk (enum diff difftype, bool rev) break; case '=': ch = ' '; - /* FALL THROUGH */ + FALLTHROUGH; case ' ': if (fillsrc > p_ptrn_lines) { free(s); @@ -1756,7 +1756,7 @@ another_hunk (enum diff difftype, bool rev) p_end = fillsrc-1; return -1; } - /* FALL THROUGH */ + FALLTHROUGH; case '+': if (filldst > p_end) { free(s); @@ -2394,8 +2394,7 @@ do_ed_script (char const *inname, char const *outname, size_t chars_read; FILE *tmpfp = 0; char const *tmpname; - int tmpfd; - pid_t pid; + int tmpfd = -1; /* placate gcc's -Wmaybe-uninitialized */ int exclusive = *outname_needs_removal ? 0 : O_EXCL; char const **ed_argv; int stdin_dup, status; |