This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch master in repository libosmium.
commit 6bbec29bd97aff81385fe6f690a42baf141d9bb5 Author: Bas Couwenberg <sebas...@xs4all.nl> Date: Wed May 3 18:39:30 2017 +0200 Imported Upstream version 2.11.2 --- CHANGELOG.md | 10 +++++++++- CMakeLists.txt | 2 +- include/osmium/memory/buffer.hpp | 15 ++++++++++++--- include/osmium/version.hpp | 4 ++-- test/t/memory/test_buffer_basics.cpp | 19 +++++++++++++++++-- 5 files changed, 41 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5aab3f3..250ec2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,13 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed +## [2.11.2] - 2017-04-10 + +### Fixed + +- Use minimum size of 64 bytes for buffers. This fixes an infinite loop + when buffer size is zero. + ## [2.11.1] - 2017-03-07 @@ -531,7 +538,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). Doxygen (up to version 1.8.8). This version contains a workaround to fix this. -[unreleased]: https://github.com/osmcode/libosmium/compare/v2.11.1...HEAD +[unreleased]: https://github.com/osmcode/libosmium/compare/v2.11.2...HEAD +[2.11.2]: https://github.com/osmcode/libosmium/compare/v2.11.1...v2.11.2 [2.11.1]: https://github.com/osmcode/libosmium/compare/v2.11.0...v2.11.1 [2.11.0]: https://github.com/osmcode/libosmium/compare/v2.10.3...v2.11.0 [2.10.3]: https://github.com/osmcode/libosmium/compare/v2.10.2...v2.10.3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 372a2a4..b823d74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ project(libosmium) set(LIBOSMIUM_VERSION_MAJOR 2) set(LIBOSMIUM_VERSION_MINOR 11) -set(LIBOSMIUM_VERSION_PATCH 1) +set(LIBOSMIUM_VERSION_PATCH 2) set(LIBOSMIUM_VERSION "${LIBOSMIUM_VERSION_MAJOR}.${LIBOSMIUM_VERSION_MINOR}.${LIBOSMIUM_VERSION_PATCH}") diff --git a/include/osmium/memory/buffer.hpp b/include/osmium/memory/buffer.hpp index 370d01e..1b75b4f 100644 --- a/include/osmium/memory/buffer.hpp +++ b/include/osmium/memory/buffer.hpp @@ -119,6 +119,15 @@ namespace osmium { auto_grow m_auto_grow{auto_grow::no}; std::function<void(Buffer&)> m_full; + static size_t calculate_capacity(size_t capacity) noexcept { + // The majority of all Nodes will fit into this size. + constexpr static const size_t min_capacity = 64; + if (capacity < min_capacity) { + return min_capacity; + } + return capacity; + } + public: /** @@ -198,13 +207,13 @@ namespace osmium { * of the alignment. */ explicit Buffer(size_t capacity, auto_grow auto_grow = auto_grow::yes) : - m_memory(new unsigned char[capacity]), + m_memory(new unsigned char[calculate_capacity(capacity)]), m_data(m_memory.get()), - m_capacity(capacity), + m_capacity(calculate_capacity(capacity)), m_written(0), m_committed(0), m_auto_grow(auto_grow) { - if (capacity % align_bytes != 0) { + if (m_capacity % align_bytes != 0) { throw std::invalid_argument("buffer capacity needs to be multiple of alignment"); } } diff --git a/include/osmium/version.hpp b/include/osmium/version.hpp index 1bda080..56b7e94 100644 --- a/include/osmium/version.hpp +++ b/include/osmium/version.hpp @@ -35,8 +35,8 @@ DEALINGS IN THE SOFTWARE. #define LIBOSMIUM_VERSION_MAJOR 2 #define LIBOSMIUM_VERSION_MINOR 11 -#define LIBOSMIUM_VERSION_PATCH 1 +#define LIBOSMIUM_VERSION_PATCH 2 -#define LIBOSMIUM_VERSION_STRING "2.11.1" +#define LIBOSMIUM_VERSION_STRING "2.11.2" #endif // OSMIUM_VERSION_HPP diff --git a/test/t/memory/test_buffer_basics.cpp b/test/t/memory/test_buffer_basics.cpp index ffe7251..d9d174b 100644 --- a/test/t/memory/test_buffer_basics.cpp +++ b/test/t/memory/test_buffer_basics.cpp @@ -6,8 +6,8 @@ TEST_CASE("Buffer basics") { osmium::memory::Buffer invalid_buffer1; osmium::memory::Buffer invalid_buffer2; - osmium::memory::Buffer empty_buffer1(1024); - osmium::memory::Buffer empty_buffer2(2048); + osmium::memory::Buffer empty_buffer1{1024}; + osmium::memory::Buffer empty_buffer2{2048}; REQUIRE(!invalid_buffer1); REQUIRE(!invalid_buffer2); @@ -32,3 +32,18 @@ TEST_CASE("Buffer basics") { } +TEST_CASE("Buffer with zero size") { + osmium::memory::Buffer buffer{0}; + REQUIRE(buffer.capacity() == 64); +} + +TEST_CASE("Buffer with less than minimum size") { + osmium::memory::Buffer buffer{63}; + REQUIRE(buffer.capacity() == 64); +} + +TEST_CASE("Buffer with minimum size") { + osmium::memory::Buffer buffer{64}; + REQUIRE(buffer.capacity() == 64); +} + -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/libosmium.git _______________________________________________ Pkg-grass-devel mailing list Pkg-grass-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel