bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] regexec: fix unintentinal fallthrough warning with GCC7


From: Andrei Borzenkov
Subject: [PATCH] regexec: fix unintentinal fallthrough warning with GCC7
Date: Thu, 23 Mar 2017 19:16:27 +0300

[  104s] In file included from ../../grub-core/gnulib/regex.c:72:0:
[  104s] ../../grub-core/gnulib/regexec.c: In function 'check_node_accept':
[  104s] ../../grub-core/gnulib/regexec.c:4100:10: error: this statement may 
fall through [-Werror=implicit-fallthrough=]
[  104s]        if (ch >= ASCII_CHARS)
[  104s]           ^
[  104s] ../../grub-core/gnulib/regexec.c:4104:5: note: here
[  104s]      case OP_PERIOD:
[  104s]      ^~~~

The code in question does have FALLTHROUGH annotation; unfortunately GCC7
ignores it, because it is separated from case statement by #endif.

The patch fixes it by using new attribute that is honored even inside #ifdef'ed
code.

---
 lib/regexec.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/regexec.c b/lib/regexec.c
index ef52b24..4588e13 100644
--- a/lib/regexec.c
+++ b/lib/regexec.c
@@ -4078,6 +4078,9 @@ check_node_accept (const re_match_context_t *mctx, const 
re_token_t *node,
     case OP_UTF8_PERIOD:
       if (ch >= ASCII_CHARS)
         return false;
+#if defined __GNUC__ && __GNUC__ >= 7
+      __attribute__ ((fallthrough));
+#endif
       /* FALLTHROUGH */
 #endif
     case OP_PERIOD:
-- 
tg: (bd78ca3..) u/regexec-gcc7-fallthrough (depends on: master)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]