diff options
author | Nick Mathewson <nickm@torproject.org> | 2021-01-13 09:48:00 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2021-01-13 09:54:43 -0500 |
commit | fa8ecf88202dfe3af9e02331ca9dee6768870911 (patch) | |
tree | 082628fb7330439775abefeec004e2a1eb21bb05 /src/feature/client/entrynodes.c | |
parent | 6c0f15500b3aa027c90d1c397d4504bb2f4dd41b (diff) | |
download | tor-fa8ecf88202dfe3af9e02331ca9dee6768870911.tar.gz tor-fa8ecf88202dfe3af9e02331ca9dee6768870911.zip |
Better fix for #40241 (--enable-all-bugs-are-fatal and fallthrough)
This one should work on GCC _and_ on Clang. The previous version
made Clang happier by not having unreachable "fallthrough"
statements, but made GCC sad because GCC didn't think that the
unconditional failures were really unconditional, and therefore
_wanted_ a FALLTHROUGH.
This patch adds a FALLTHROUGH_UNLESS_ALL_BUGS_ARE_FATAL macro that
seems to please both GCC and Clang in this case: ordinarily it is a
FALLTHROUGH, but when ALL_BUGS_ARE_FATAL is defined, it's an
abort().
Fixes bug 40241 again. Bugfix on earlier fix for 40241, which was
merged into maint-0.3.5 and forward, and released in 0.4.5.3-rc.
Diffstat (limited to 'src/feature/client/entrynodes.c')
-rw-r--r-- | src/feature/client/entrynodes.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c index c930fe244f..6c7f8057bd 100644 --- a/src/feature/client/entrynodes.c +++ b/src/feature/client/entrynodes.c @@ -2263,9 +2263,7 @@ entry_guards_note_guard_success(guard_selection_t *gs, break; default: tor_assert_nonfatal_unreached(); -#ifndef ALL_BUGS_ARE_FATAL - FALLTHROUGH; -#endif + FALLTHROUGH_UNLESS_ALL_BUGS_ARE_FATAL; case GUARD_CIRC_STATE_USABLE_IF_NO_BETTER_GUARD: if (guard->is_primary) { /* XXXX #20832 -- I don't actually like this logic. It seems to make |