diff --git a/SConstruct b/SConstruct index e7f69bc3eaa..0cea9f87bf9 100644 --- a/SConstruct +++ b/SConstruct @@ -98,11 +98,13 @@ else: if env['CXX'].startswith('g++'): #env.Append(CCFLAGS = ['-Wconversion']) env.Append(CCFLAGS = ['-Wcast-align']) + env.Append(CCFLAGS = ['-Wshadow']) elif env['CXX'].startswith('clang++'): #env.Append(CCFLAGS = ['-Wcast-align']) #env.Append(CCFLAGS = ['-Wglobal-constructors']) #env.Append(CCFLAGS = ['-Wconversion']) env.Append(CCFLAGS = ['-Wno-padded']) + env.Append(CCFLAGS = ['-Wshadow']) # Wpadded # Wsign-conversion diff --git a/changelog.md b/changelog.md index 300efb35fd0..495c55b18b1 100644 --- a/changelog.md +++ b/changelog.md @@ -28,6 +28,8 @@ HEAD - Bug: Fix a crash when parsing empty HTTP headers. Thank you Thingol for reporting. - Bug: Fix a crash following use of the `stop_listening` function. Thank you Thingol for reporting. +- Bug: Fix use of variable names that shadow function parameters. The library should + compile cleanly with -Wshadow now. Thank you giszo for reporting. #318 - Compatibility: Fix compile time conflict with Visual Studio's MIN/MAX macros. Thank you Robin Rowe for reporting. diff --git a/examples/broadcast_server/broadcast_server.cpp b/examples/broadcast_server/broadcast_server.cpp index 4066e07e584..6ca9bcbb049 100644 --- a/examples/broadcast_server/broadcast_server.cpp +++ b/examples/broadcast_server/broadcast_server.cpp @@ -111,13 +111,13 @@ class broadcast_server { lock.unlock(); if (a.type == SUBSCRIBE) { - unique_lock lock(m_connection_lock); + unique_lock con_lock(m_connection_lock); m_connections.insert(a.hdl); } else if (a.type == UNSUBSCRIBE) { - unique_lock lock(m_connection_lock); + unique_lock con_lock(m_connection_lock); m_connections.erase(a.hdl); } else if (a.type == MESSAGE) { - unique_lock lock(m_connection_lock); + unique_lock con_lock(m_connection_lock); con_list::iterator it; for (it = m_connections.begin(); it != m_connections.end(); ++it) { diff --git a/websocketpp/impl/connection_impl.hpp b/websocketpp/impl/connection_impl.hpp index 1ba007f8548..b2305396b08 100644 --- a/websocketpp/impl/connection_impl.hpp +++ b/websocketpp/impl/connection_impl.hpp @@ -849,7 +849,7 @@ void connection::send_http_response_error() { // All exit paths for this function need to call send_http_response() or submit // a new read request with this function as the handler. template -void connection::handle_read_frame(const lib::error_code& ec, +void connection::handle_read_frame(lib::error_code const & ec, size_t bytes_transferred) { //m_alog.write(log::alevel::devel,"connection handle_read_frame"); @@ -909,12 +909,12 @@ void connection::handle_read_frame(const lib::error_code& ec, m_alog.write(log::alevel::devel,s.str()); } - lib::error_code ec; + lib::error_code consume_ec; p += m_processor->consume( reinterpret_cast(m_buf)+p, bytes_transferred-p, - ec + consume_ec ); if (m_alog.static_test(log::alevel::devel)) { @@ -922,11 +922,11 @@ void connection::handle_read_frame(const lib::error_code& ec, s << "bytes left after consume: " << bytes_transferred-p; m_alog.write(log::alevel::devel,s.str()); } - if (ec) { - m_elog.write(log::elevel::rerror,"consume error: "+ec.message()); + if (consume_ec) { + m_elog.write(log::elevel::rerror,"consume error: "+consume_ec.message()); if (config::drop_on_protocol_error) { - this->terminate(ec); + this->terminate(consume_ec); return; } else { lib::error_code close_ec; @@ -1354,7 +1354,7 @@ void connection::handle_send_http_request(const lib::error_code& ec) { } template -void connection::handle_read_http_response(const lib::error_code& ec, +void connection::handle_read_http_response(lib::error_code const & ec, size_t bytes_transferred) { m_alog.write(log::alevel::devel,"handle_read_http_response"); @@ -1389,16 +1389,16 @@ void connection::handle_read_http_response(const lib::error_code& ec, m_handshake_timer.reset(); } - lib::error_code ec = m_processor->validate_server_handshake_response( + lib::error_code validate_ec = m_processor->validate_server_handshake_response( m_request, m_response ); - if (ec) { + if (validate_ec) { m_elog.write(log::elevel::rerror, std::string("Server handshake response was invalid: ")+ - ec.message() + validate_ec.message() ); - this->terminate(ec); + this->terminate(validate_ec); return; } @@ -1714,8 +1714,7 @@ const std::vector& connection::get_supported_versions() const } template -void connection::process_control_frame(typename - config::message_type::ptr msg) +void connection::process_control_frame(typename config::message_type::ptr msg) { m_alog.write(log::alevel::devel,"process_control_frame"); @@ -1762,7 +1761,7 @@ void connection::process_control_frame(typename m_remote_close_code = close::extract_code(msg->get_payload(),ec); if (ec) { - std::stringstream s; + s.str(""); if (config::drop_on_protocol_error) { s << "Received invalid close code " << m_remote_close_code << " dropping connection per config."; @@ -1802,7 +1801,7 @@ void connection::process_control_frame(typename } if (m_state == session::state::open) { - std::stringstream s; + s.str(""); s << "Received close frame with code " << m_remote_close_code << " and reason " << m_remote_close_reason; m_alog.write(log::alevel::devel,s.str());