diff options
Diffstat (limited to 'devel/libevent/files/patch-gcc7')
-rw-r--r-- | devel/libevent/files/patch-gcc7 | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/devel/libevent/files/patch-gcc7 b/devel/libevent/files/patch-gcc7 new file mode 100644 index 000000000000..d072a5a559b8 --- /dev/null +++ b/devel/libevent/files/patch-gcc7 @@ -0,0 +1,83 @@ +Fix -Werror=implicit-fallthrough (fixes gcc-7) + +https://github.com/libevent/libevent/commit/94e7dcebc320 +https://github.com/libevent/libevent/commit/ffbce578c40a + +--- bufferevent_filter.c.orig 2017-01-25 23:37:15 UTC ++++ bufferevent_filter.c +@@ -612,9 +612,12 @@ be_filter_ctrl(struct bufferevent *bev, + bevf->underlying->be_ops->ctrl) { + return (bevf->underlying->be_ops->ctrl)(bevf->underlying, op, data); + } ++ EVUTIL_FALLTHROUGH; + + case BEV_CTRL_GET_FD: ++ EVUTIL_FALLTHROUGH; + case BEV_CTRL_CANCEL_ALL: ++ EVUTIL_FALLTHROUGH; + default: + return -1; + } +--- evdns.c.orig 2017-01-25 23:37:15 UTC ++++ evdns.c +@@ -2265,10 +2265,11 @@ evdns_request_transmit(struct request *r + nameserver_write_waiting(req->ns, 1); + return 1; + case 2: +- /* failed to transmit the request entirely. */ ++ /* failed to transmit the request entirely. we can fallthrough since ++ * we'll set a timeout, which will time out, and make us retransmit the ++ * request anyway. */ + retcode = 1; +- /* fall through: we'll set a timeout, which will time out, +- * and make us retransmit the request anyway. */ ++ EVUTIL_FALLTHROUGH; + default: + /* all ok */ + log(EVDNS_LOG_DEBUG, +--- event.c.orig 2017-01-25 23:37:15 UTC ++++ event.c +@@ -2960,6 +2960,7 @@ event_callback_activate_nolock_(struct e + switch (evcb->evcb_flags & (EVLIST_ACTIVE|EVLIST_ACTIVE_LATER)) { + default: + EVUTIL_ASSERT(0); ++ EVUTIL_FALLTHROUGH; + case EVLIST_ACTIVE_LATER: + event_queue_remove_active_later(base, evcb); + r = 0; +--- util-internal.h.orig 2017-01-25 23:37:15 UTC ++++ util-internal.h +@@ -50,6 +50,20 @@ + extern "C" { + #endif + ++/* __has_attribute() wrapper */ ++#ifdef __has_attribute ++#define EVUTIL_HAS_ATTRIBUTE __has_attribute ++#endif ++/** clang 3 __has_attribute misbehaves in some versions */ ++#if defined(__clang__) && \ ++ __clang__ == 1 && __clang_major__ == 3 && \ ++ (__clang_minor__ >= 2 && __clang_minor__ <= 5) ++#undef EVUTIL_HAS_ATTRIBUTE ++#endif ++#ifndef EVUTIL_HAS_ATTRIBUTE ++#define EVUTIL_HAS_ATTRIBUTE(x) 0 ++#endif ++ + /* If we need magic to say "inline", get it for free internally. */ + #ifdef EVENT__inline + #define inline EVENT__inline +@@ -308,6 +322,12 @@ ev_int32_t evutil_weakrand_range_(struct + #define EVUTIL_UNLIKELY(p) (p) + #endif + ++#if EVUTIL_HAS_ATTRIBUTE(fallthrough) ++#define EVUTIL_FALLTHROUGH __attribute__((fallthrough)) ++#else ++#define EVUTIL_FALLTHROUGH /* fallthrough */ ++#endif ++ + /* Replacement for assert() that calls event_errx on failure. */ + #ifdef NDEBUG + #define EVUTIL_ASSERT(cond) EVUTIL_NIL_CONDITION_(cond) |