GCC 6 was not very good at value propagation and is often mislead about
risks of null derefs. Since 2.6-dev commit
13a35e575 ("MAJOR: conn_stream/
stream-int: move the appctx to the conn-stream"), it sees a risk of null-
deref in stream_upgrade_from_cs() after checking cs_conn_mux(cs). Let's
disguise the result so that it doesn't complain anymore. The output code
is exactly the same. The same method could be used to shut warnings at
-O1 that affect the same compiler by the way.
struct stream *s = cs_strm(cs);
if (cs_conn_mux(cs)) {
- const struct mux_ops *mux = cs_conn_mux(cs);
+ const struct mux_ops *mux = DISGUISE(cs_conn_mux(cs));
if (mux->flags & MX_FL_HTX)
s->flags |= SF_HTX;