From 82d76e4882b2bdde1ec4a659fa736fdf698fbedd Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Tue, 13 Jun 2017 11:53:06 -0700 Subject: [PATCH] Convert buffer in range loops fix #485 --- CHANGELOG.md | 1 + CMakeLists.txt | 4 ++++ Jamroot | 1 + examples/file_body.hpp | 2 +- extras/beast/test/string_iostream.hpp | 2 +- extras/beast/test/string_ostream.hpp | 3 ++- include/beast/core/detail/ostream.hpp | 2 +- include/beast/websocket/detail/mask.hpp | 2 +- include/beast/websocket/detail/pmd_extension.hpp | 2 +- include/beast/websocket/detail/utf8_checker.hpp | 2 +- test/core/buffer_bench.cpp | 2 +- test/core/buffer_prefix.cpp | 2 +- test/core/buffer_test.hpp | 2 +- test/http/message_fuzz.hpp | 4 ++-- test/http/nodejs_parser.hpp | 2 +- 15 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a814a331..8f254ce8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Version 56: * Reset error codes * More basic_parser tests * Add an INTERFACE cmake target +* Convert buffer in range loops -------------------------------------------------------------------------------- diff --git a/CMakeLists.txt b/CMakeLists.txt index 6028e2cc..c6bbf06e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,10 @@ else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wpedantic -Wno-unused-parameter") + + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wrange-loop-analysis") + endif () endif() #------------------------------------------------------------------------------- diff --git a/Jamroot b/Jamroot index d3c513e3..38f77417 100644 --- a/Jamroot +++ b/Jamroot @@ -89,6 +89,7 @@ project beast clang:-std=c++11 clang:-Wno-unused-parameter clang:-Wno-unused-variable # Temporary until we can figure out -isystem + clang:-Wrange-loop-analysis msvc:_SCL_SECURE_NO_WARNINGS=1 msvc:_CRT_SECURE_NO_WARNINGS=1 msvc:"/wd4100 /wd4251 /bigobj" diff --git a/examples/file_body.hpp b/examples/file_body.hpp index a560668c..57d7ca77 100644 --- a/examples/file_body.hpp +++ b/examples/file_body.hpp @@ -362,7 +362,7 @@ put(ConstBufferSequence const& buffers, error_code& ec) { // Loop over all the buffers in the sequence, // and write each one to the file. - for(auto const& buffer : buffers) + for(boost::asio::const_buffer buffer : buffers) { // Write this buffer to the file fwrite( diff --git a/extras/beast/test/string_iostream.hpp b/extras/beast/test/string_iostream.hpp index 83f0898e..77a634bd 100644 --- a/extras/beast/test/string_iostream.hpp +++ b/extras/beast/test/string_iostream.hpp @@ -124,7 +124,7 @@ public: using boost::asio::buffer_cast; auto const n = buffer_size(buffers); str.reserve(str.size() + n); - for(auto const& buffer : buffers) + for(boost::asio::const_buffer buffer : buffers) str.append(buffer_cast(buffer), buffer_size(buffer)); return n; diff --git a/extras/beast/test/string_ostream.hpp b/extras/beast/test/string_ostream.hpp index cee4a3ef..7a44fb49 100644 --- a/extras/beast/test/string_ostream.hpp +++ b/extras/beast/test/string_ostream.hpp @@ -99,7 +99,8 @@ public: auto const n = (std::min)(buffer_size(buffers), write_max_); str.reserve(str.size() + n); - for(auto const& buffer : buffer_prefix(n, buffers)) + for(boost::asio::const_buffer buffer : + buffer_prefix(n, buffers)) str.append(buffer_cast(buffer), buffer_size(buffer)); return n; diff --git a/include/beast/core/detail/ostream.hpp b/include/beast/core/detail/ostream.hpp index 5f2f92c2..1fafffe7 100644 --- a/include/beast/core/detail/ostream.hpp +++ b/include/beast/core/detail/ostream.hpp @@ -45,7 +45,7 @@ operator<<(std::ostream& os, { using boost::asio::buffer_cast; using boost::asio::buffer_size; - for(auto const& b : v.b_) + for(boost::asio::const_buffer b : v.b_) os.write(buffer_cast(b), buffer_size(b)); return os; diff --git a/include/beast/websocket/detail/mask.hpp b/include/beast/websocket/detail/mask.hpp index fdb8e86f..27a3a155 100644 --- a/include/beast/websocket/detail/mask.hpp +++ b/include/beast/websocket/detail/mask.hpp @@ -254,7 +254,7 @@ void mask_inplace( MutableBuffers const& bs, KeyType& key) { - for(auto const& b : bs) + for(boost::asio::mutable_buffer b : bs) mask_inplace(b, key); } diff --git a/include/beast/websocket/detail/pmd_extension.hpp b/include/beast/websocket/detail/pmd_extension.hpp index 1ee3cbd4..f6ee68de 100644 --- a/include/beast/websocket/detail/pmd_extension.hpp +++ b/include/beast/websocket/detail/pmd_extension.hpp @@ -409,7 +409,7 @@ deflate( zs.next_in = nullptr; zs.avail_out = buffer_size(out); zs.next_out = buffer_cast(out); - for(auto const& in : cb) + for(boost::asio::const_buffer in : cb) { zs.avail_in = buffer_size(in); if(zs.avail_in == 0) diff --git a/include/beast/websocket/detail/utf8_checker.hpp b/include/beast/websocket/detail/utf8_checker.hpp index 39e50a46..47082851 100644 --- a/include/beast/websocket/detail/utf8_checker.hpp +++ b/include/beast/websocket/detail/utf8_checker.hpp @@ -132,7 +132,7 @@ write(ConstBufferSequence const& bs) "ConstBufferSequence requirements not met"); using boost::asio::buffer_cast; using boost::asio::buffer_size; - for(auto const& b : bs) + for(boost::asio::const_buffer b : bs) if(! write(buffer_cast(b), buffer_size(b))) return false; diff --git a/test/core/buffer_bench.cpp b/test/core/buffer_bench.cpp index d77da056..76f3b3d2 100644 --- a/test/core/buffer_bench.cpp +++ b/test/core/buffer_bench.cpp @@ -66,7 +66,7 @@ public: std::size_t n = 0; using boost::asio::buffer_cast; using boost::asio::buffer_size; - for(auto const& buffer : buffers) + for(boost::asio::mutable_buffer buffer : buffers) { std::fill( buffer_cast(buffer), diff --git a/test/core/buffer_prefix.cpp b/test/core/buffer_prefix.cpp index c7d2f65d..4da8687b 100644 --- a/test/core/buffer_prefix.cpp +++ b/test/core/buffer_prefix.cpp @@ -98,7 +98,7 @@ public: using boost::asio::buffer_size; std::string s; s.reserve(buffer_size(bs)); - for(auto const& b : bs) + for(boost::asio::const_buffer b : bs) s.append(buffer_cast(b), buffer_size(b)); return s; diff --git a/test/core/buffer_test.hpp b/test/core/buffer_test.hpp index 6a31d285..e5b0affa 100644 --- a/test/core/buffer_test.hpp +++ b/test/core/buffer_test.hpp @@ -30,7 +30,7 @@ to_string(ConstBufferSequence const& bs) using boost::asio::buffer_size; std::string s; s.reserve(buffer_size(bs)); - for(auto const& b : bs) + for(boost::asio::const_buffer b : bs) s.append(buffer_cast(b), buffer_size(b)); return s; diff --git a/test/http/message_fuzz.hpp b/test/http/message_fuzz.hpp index a2f10932..2c1ff25b 100644 --- a/test/http/message_fuzz.hpp +++ b/test/http/message_fuzz.hpp @@ -500,7 +500,7 @@ public: auto const len = rand(500); ostream(db) << "Content-Length: " << len << "\r\n\r\n"; - for(auto const& b : db.prepare(len)) + for(boost::asio::mutable_buffer b : db.prepare(len)) { auto p = boost::asio::buffer_cast(b); auto n = boost::asio::buffer_size(b); @@ -520,7 +520,7 @@ public: len -= n; ostream(db) << to_hex(n) << "\r\n"; - for(auto const& b : db.prepare(n)) + for(boost::asio::mutable_buffer b : db.prepare(n)) { auto p = boost::asio::buffer_cast(b); auto m = boost::asio::buffer_size(b); diff --git a/test/http/nodejs_parser.hpp b/test/http/nodejs_parser.hpp index 7f71eb42..c430a6c8 100644 --- a/test/http/nodejs_parser.hpp +++ b/test/http/nodejs_parser.hpp @@ -489,7 +489,7 @@ nodejs_basic_parser::write( using boost::asio::buffer_cast; using boost::asio::buffer_size; std::size_t bytes_used = 0; - for(auto const& buffer : buffers) + for(boost::asio::const_buffer buffer : buffers) { auto const n = write( buffer_cast(buffer),