[Git][debian-gis-team/libosmium][buster-backports] 6 commits: New upstream version 2.15.6
Bas Couwenberg
gitlab at salsa.debian.org
Fri Jul 3 06:04:13 BST 2020
Bas Couwenberg pushed to branch buster-backports at Debian GIS Project / libosmium
Commits:
d55ad323 by Bas Couwenberg at 2020-06-28T08:00:19+02:00
New upstream version 2.15.6
- - - - -
5a318041 by Bas Couwenberg at 2020-06-28T08:00:24+02:00
Update upstream source from tag 'upstream/2.15.6'
Update to upstream version '2.15.6'
with Debian dir 77503069d2271922a6e1d33afd273843b680c7a4
- - - - -
4d78d52c by Bas Couwenberg at 2020-06-28T08:00:35+02:00
New upstream release.
- - - - -
37d4217c by Bas Couwenberg at 2020-06-28T08:02:58+02:00
Set distribution to unstable.
- - - - -
95bc3b05 by Bas Couwenberg at 2020-07-03T06:46:38+02:00
Merge tag 'debian/2.15.6-1' into buster-backports
releasing package libosmium version 2.15.6-1
- - - - -
044ddf06 by Bas Couwenberg at 2020-07-03T06:46:45+02:00
Rebuild for buster-backports.
- - - - -
19 changed files:
- CHANGELOG.md
- CMakeLists.txt
- debian/changelog
- include/osmium/area/detail/basic_assembler.hpp
- include/osmium/area/problem_reporter.hpp
- include/osmium/index/id_set.hpp
- include/osmium/index/multimap/sparse_mem_multimap.hpp
- include/osmium/io/bzip2_compression.hpp
- include/osmium/io/compression.hpp
- include/osmium/io/detail/o5m_input_format.hpp
- include/osmium/io/detail/opl_input_format.hpp
- include/osmium/io/detail/output_format.hpp
- include/osmium/io/detail/pbf_input_format.hpp
- include/osmium/io/detail/xml_input_format.hpp
- include/osmium/io/gzip_compression.hpp
- include/osmium/version.hpp
- test/t/index/test_id_set.cpp
- test/t/io/test_reader_with_mock_decompression.cpp
- test/t/io/test_writer_with_mock_compression.cpp
Changes:
=====================================
CHANGELOG.md
=====================================
@@ -13,6 +13,23 @@ This project adheres to [Semantic Versioning](https://semver.org/).
### Fixed
+## [2.15.6] - 2020-06-27
+
+### Added
+
+* Add `IdSetSmall::merge_sorted` function.
+
+### Changed
+
+* Little optimization for IdSetSmall: Don't add the same id twice in a row.
+
+### Fixed
+
+* Do not build areas with "recursion depth > 20". This happens when there
+ are complex multipolygon with many rings touching in single points. This
+ is a quick fix that hopefully keeps us going until we find a better
+ solution.
+
## [2.15.5] - 2020-04-21
### Added
@@ -1015,7 +1032,8 @@ This project adheres to [Semantic Versioning](https://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.15.5...HEAD
+[unreleased]: https://github.com/osmcode/libosmium/compare/v2.15.6...HEAD
+[2.15.6]: https://github.com/osmcode/libosmium/compare/v2.15.5...v2.15.6
[2.15.5]: https://github.com/osmcode/libosmium/compare/v2.15.4...v2.15.5
[2.15.4]: https://github.com/osmcode/libosmium/compare/v2.15.3...v2.15.4
[2.15.3]: https://github.com/osmcode/libosmium/compare/v2.15.2...v2.15.3
=====================================
CMakeLists.txt
=====================================
@@ -40,7 +40,7 @@ project(libosmium)
set(LIBOSMIUM_VERSION_MAJOR 2)
set(LIBOSMIUM_VERSION_MINOR 15)
-set(LIBOSMIUM_VERSION_PATCH 5)
+set(LIBOSMIUM_VERSION_PATCH 6)
set(LIBOSMIUM_VERSION
"${LIBOSMIUM_VERSION_MAJOR}.${LIBOSMIUM_VERSION_MINOR}.${LIBOSMIUM_VERSION_PATCH}")
=====================================
debian/changelog
=====================================
@@ -1,3 +1,15 @@
+libosmium (2.15.6-1~bpo10+1) buster-backports; urgency=medium
+
+ * Rebuild for buster-backports.
+
+ -- Bas Couwenberg <sebastic at debian.org> Fri, 03 Jul 2020 06:46:41 +0200
+
+libosmium (2.15.6-1) unstable; urgency=medium
+
+ * New upstream release.
+
+ -- Bas Couwenberg <sebastic at debian.org> Sun, 28 Jun 2020 08:02:49 +0200
+
libosmium (2.15.5-1~bpo10+1) buster-backports; urgency=medium
* Rebuild for buster-backports.
=====================================
include/osmium/area/detail/basic_assembler.hpp
=====================================
@@ -105,6 +105,12 @@ namespace osmium {
static constexpr const std::size_t max_split_locations = 100ULL;
+ // Maximum recursion depth, stops complex multipolygons from
+ // breaking everything.
+ enum : unsigned {
+ max_depth = 20U
+ };
+
struct slocation {
enum {
@@ -713,7 +719,13 @@ namespace osmium {
};
+ struct exceeded_max_depth {};
+
void find_candidates(std::vector<candidate>& candidates, std::unordered_set<osmium::Location>& loc_done, const std::vector<location_to_ring_map>& xrings, const candidate& cand, unsigned depth = 0) {
+ if (depth > max_depth) {
+ throw exceeded_max_depth{};
+ }
+
if (debug()) {
std::cerr << " find_candidates sum=" << cand.sum << " start=" << cand.start_location << " stop=" << cand.stop_location << "\n";
for (const auto& ring : cand.rings) {
@@ -826,7 +838,14 @@ namespace osmium {
loc_done.insert(cand.stop_location);
std::vector<candidate> candidates;
- find_candidates(candidates, loc_done, xrings, cand);
+ try {
+ find_candidates(candidates, loc_done, xrings, cand);
+ } catch (const exceeded_max_depth&) {
+ if (m_config.debug_level > 0) {
+ std::cerr << " Exceeded max depth (" << static_cast<unsigned>(max_depth) << ")\n";
+ }
+ return false;
+ }
if (candidates.empty()) {
if (debug()) {
=====================================
include/osmium/area/problem_reporter.hpp
=====================================
@@ -93,6 +93,10 @@ namespace osmium {
m_object_id = object_id;
}
+ osmium::object_id_type object_id() const noexcept {
+ return m_object_id;
+ }
+
void set_nodes(size_t nodes) noexcept {
m_nodes = nodes;
}
=====================================
include/osmium/index/id_set.hpp
=====================================
@@ -387,7 +387,9 @@ namespace osmium {
* Add the given Id to the set.
*/
void set(T id) final {
- m_data.push_back(id);
+ if (m_data.empty() || m_data.back() != id) {
+ m_data.push_back(id);
+ }
}
/**
@@ -430,7 +432,8 @@ namespace osmium {
/**
* Sort the internal vector and remove any duplicates. Call this
- * before using size(), get_binary_search() or using an iterator.
+ * before using size(), get_binary_search(), merge_sorted() or
+ * using an iterator.
*/
void sort_unique() {
std::sort(m_data.begin(), m_data.end());
@@ -453,6 +456,22 @@ namespace osmium {
return m_data.capacity() * sizeof(T);
}
+ /**
+ * Merge the other set into this one. The result is sorted.
+ *
+ * @pre Both sets must be sorted and must not contain any
+ * duplicates. Call sort_unique() if you are not sure.
+ */
+ void merge_sorted(const IdSetSmall<T>& other) {
+ std::vector<T> new_data;
+ new_data.reserve(m_data.size() + other.m_data.size());
+ std::set_union(m_data.cbegin(), m_data.cend(),
+ other.m_data.cbegin(), other.m_data.cend(),
+ std::back_inserter(new_data));
+ using std::swap;
+ swap(new_data, m_data);
+ }
+
/// Iterator type. There is no non-const iterator.
using const_iterator = typename std::vector<T>::const_iterator;
=====================================
include/osmium/index/multimap/sparse_mem_multimap.hpp
=====================================
@@ -53,7 +53,7 @@ namespace osmium {
* lot of memory, but might make sense for small maps.
*/
template <typename TId, typename TValue>
- class SparseMemMultimap : public osmium::index::multimap::Multimap<TId, TValue> {
+ class SparseMemMultimap final : public osmium::index::multimap::Multimap<TId, TValue> {
// This is a rough estimate for the memory needed for each
// element in the map (id + value + pointers to left, right,
@@ -79,13 +79,13 @@ namespace osmium {
SparseMemMultimap() = default;
- ~SparseMemMultimap() noexcept final = default;
+ ~SparseMemMultimap() noexcept = default;
void unsorted_set(const TId id, const TValue value) {
m_elements.emplace(id, value);
}
- void set(const TId id, const TValue value) final {
+ void set(const TId id, const TValue value) override {
m_elements.emplace(id, value);
}
@@ -115,15 +115,15 @@ namespace osmium {
return m_elements.end();
}
- size_t size() const final {
+ size_t size() const override {
return m_elements.size();
}
- size_t used_memory() const final {
+ size_t used_memory() const override {
return element_size * m_elements.size();
}
- void clear() final {
+ void clear() override {
m_elements.clear();
}
@@ -131,7 +131,7 @@ namespace osmium {
// intentionally left blank
}
- void dump_as_list(const int fd) final {
+ void dump_as_list(const int fd) override {
std::vector<element_type> v;
v.reserve(m_elements.size());
for (const auto& element : m_elements) {
=====================================
include/osmium/io/bzip2_compression.hpp
=====================================
@@ -165,7 +165,7 @@ namespace osmium {
} // namespace detail
- class Bzip2Compressor : public Compressor {
+ class Bzip2Compressor final : public Compressor {
detail::file_wrapper m_file;
BZFILE* m_bzfile = nullptr;
@@ -191,7 +191,7 @@ namespace osmium {
Bzip2Compressor(Bzip2Compressor&&) = delete;
Bzip2Compressor& operator=(Bzip2Compressor&&) = delete;
- ~Bzip2Compressor() noexcept final {
+ ~Bzip2Compressor() noexcept {
try {
close();
} catch (...) {
@@ -199,7 +199,7 @@ namespace osmium {
}
}
- void write(const std::string& data) final {
+ void write(const std::string& data) override {
assert(data.size() < std::numeric_limits<int>::max());
assert(m_bzfile);
#ifdef _MSC_VER
@@ -212,7 +212,7 @@ namespace osmium {
}
}
- void close() final {
+ void close() override {
if (m_bzfile) {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
@@ -232,7 +232,7 @@ namespace osmium {
}; // class Bzip2Compressor
- class Bzip2Decompressor : public Decompressor {
+ class Bzip2Decompressor final : public Decompressor {
detail::file_wrapper m_file;
BZFILE* m_bzfile = nullptr;
@@ -258,7 +258,7 @@ namespace osmium {
Bzip2Decompressor(Bzip2Decompressor&&) = delete;
Bzip2Decompressor& operator=(Bzip2Decompressor&&) = delete;
- ~Bzip2Decompressor() noexcept final {
+ ~Bzip2Decompressor() noexcept {
try {
close();
} catch (...) {
@@ -266,7 +266,7 @@ namespace osmium {
}
}
- std::string read() final {
+ std::string read() override {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
#endif
@@ -311,7 +311,7 @@ namespace osmium {
return buffer;
}
- void close() final {
+ void close() override {
if (m_bzfile) {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
@@ -328,7 +328,7 @@ namespace osmium {
}; // class Bzip2Decompressor
- class Bzip2BufferDecompressor : public Decompressor {
+ class Bzip2BufferDecompressor final : public Decompressor {
const char* m_buffer;
std::size_t m_buffer_size;
@@ -355,7 +355,7 @@ namespace osmium {
Bzip2BufferDecompressor(Bzip2BufferDecompressor&&) = delete;
Bzip2BufferDecompressor& operator=(Bzip2BufferDecompressor&&) = delete;
- ~Bzip2BufferDecompressor() noexcept final {
+ ~Bzip2BufferDecompressor() noexcept {
try {
close();
} catch (...) {
@@ -363,7 +363,7 @@ namespace osmium {
}
}
- std::string read() final {
+ std::string read() override {
std::string output;
if (m_buffer) {
@@ -388,7 +388,7 @@ namespace osmium {
return output;
}
- void close() final {
+ void close() override {
BZ2_bzDecompressEnd(&m_bzstream);
}
=====================================
include/osmium/io/compression.hpp
=====================================
@@ -216,7 +216,7 @@ namespace osmium {
}; // class CompressionFactory
- class NoCompressor : public Compressor {
+ class NoCompressor final : public Compressor {
int m_fd;
@@ -233,7 +233,7 @@ namespace osmium {
NoCompressor(NoCompressor&&) = delete;
NoCompressor& operator=(NoCompressor&&) = delete;
- ~NoCompressor() noexcept final {
+ ~NoCompressor() noexcept {
try {
close();
} catch (...) {
@@ -241,11 +241,11 @@ namespace osmium {
}
}
- void write(const std::string& data) final {
+ void write(const std::string& data) override {
osmium::io::detail::reliable_write(m_fd, data.data(), data.size());
}
- void close() final {
+ void close() override {
if (m_fd >= 0) {
const int fd = m_fd;
m_fd = -1;
@@ -264,7 +264,7 @@ namespace osmium {
}; // class NoCompressor
- class NoDecompressor : public Decompressor {
+ class NoDecompressor final : public Decompressor {
int m_fd = -1;
const char* m_buffer = nullptr;
@@ -288,7 +288,7 @@ namespace osmium {
NoDecompressor(NoDecompressor&&) = delete;
NoDecompressor& operator=(NoDecompressor&&) = delete;
- ~NoDecompressor() noexcept final {
+ ~NoDecompressor() noexcept {
try {
close();
} catch (...) {
@@ -296,7 +296,7 @@ namespace osmium {
}
}
- std::string read() final {
+ std::string read() override {
std::string buffer;
if (m_buffer) {
@@ -317,7 +317,7 @@ namespace osmium {
return buffer;
}
- void close() final {
+ void close() override {
if (m_fd >= 0) {
const int fd = m_fd;
m_fd = -1;
=====================================
include/osmium/io/detail/o5m_input_format.hpp
=====================================
@@ -150,7 +150,7 @@ namespace osmium {
}; // class ReferenceTable
- class O5mParser : public Parser {
+ class O5mParser final : public Parser {
enum {
initial_buffer_size = 1024UL * 1024UL
@@ -617,9 +617,9 @@ namespace osmium {
O5mParser(O5mParser&&) = delete;
O5mParser& operator=(O5mParser&&) = delete;
- ~O5mParser() noexcept final = default;
+ ~O5mParser() noexcept = default;
- void run() final {
+ void run() override {
osmium::thread::set_thread_name("_osmium_o5m_in");
decode_header();
=====================================
include/osmium/io/detail/opl_input_format.hpp
=====================================
@@ -98,7 +98,7 @@ namespace osmium {
}
}
- class OPLParser : public Parser {
+ class OPLParser final : public Parser {
enum {
initial_buffer_size = 1024UL * 1024UL
@@ -122,7 +122,7 @@ namespace osmium {
OPLParser(OPLParser&&) = delete;
OPLParser& operator=(OPLParser&&) = delete;
- ~OPLParser() noexcept final = default;
+ ~OPLParser() noexcept = default;
void parse_line(const char* data) {
if (opl_parse_line(m_line_count, data, m_buffer, read_types())) {
@@ -134,7 +134,7 @@ namespace osmium {
++m_line_count;
}
- void run() final {
+ void run() override {
osmium::thread::set_thread_name("_osmium_opl_in");
line_by_line(*this);
=====================================
include/osmium/io/detail/output_format.hpp
=====================================
@@ -199,7 +199,7 @@ namespace osmium {
}; // class OutputFormatFactory
- class BlackholeOutputFormat : public osmium::io::detail::OutputFormat {
+ class BlackholeOutputFormat final : public osmium::io::detail::OutputFormat {
public:
@@ -213,9 +213,9 @@ namespace osmium {
BlackholeOutputFormat(BlackholeOutputFormat&&) = delete;
BlackholeOutputFormat& operator=(BlackholeOutputFormat&&) = delete;
- ~BlackholeOutputFormat() noexcept final = default;
+ ~BlackholeOutputFormat() noexcept = default;
- void write_buffer(osmium::memory::Buffer&& /*buffer*/) final {
+ void write_buffer(osmium::memory::Buffer&& /*buffer*/) override {
}
}; // class BlackholeOutputFormat
=====================================
include/osmium/io/detail/pbf_input_format.hpp
=====================================
@@ -62,7 +62,7 @@ namespace osmium {
namespace detail {
- class PBFParser : public Parser {
+ class PBFParser final : public Parser {
std::string m_input_buffer{};
@@ -203,9 +203,9 @@ namespace osmium {
PBFParser(PBFParser&&) = delete;
PBFParser& operator=(PBFParser&&) = delete;
- ~PBFParser() noexcept final = default;
+ ~PBFParser() noexcept = default;
- void run() final {
+ void run() override {
osmium::thread::set_thread_name("_osmium_pbf_in");
parse_header_blob();
=====================================
include/osmium/io/detail/xml_input_format.hpp
=====================================
@@ -125,7 +125,7 @@ namespace osmium {
namespace detail {
- class XMLParser : public Parser {
+ class XMLParser final : public Parser {
enum {
initial_buffer_size = 1024UL * 1024UL
@@ -768,9 +768,9 @@ namespace osmium {
XMLParser(XMLParser&&) = delete;
XMLParser& operator=(XMLParser&&) = delete;
- ~XMLParser() noexcept final = default;
+ ~XMLParser() noexcept = default;
- void run() final {
+ void run() override {
osmium::thread::set_thread_name("_osmium_xml_in");
ExpatXMLParser parser{this};
=====================================
include/osmium/io/gzip_compression.hpp
=====================================
@@ -102,7 +102,7 @@ namespace osmium {
} // namespace detail
- class GzipCompressor : public Compressor {
+ class GzipCompressor final : public Compressor {
int m_fd;
gzFile m_gzfile;
@@ -127,7 +127,7 @@ namespace osmium {
GzipCompressor(GzipCompressor&&) = delete;
GzipCompressor& operator=(GzipCompressor&&) = delete;
- ~GzipCompressor() noexcept final {
+ ~GzipCompressor() noexcept {
try {
close();
} catch (...) {
@@ -135,7 +135,7 @@ namespace osmium {
}
}
- void write(const std::string& data) final {
+ void write(const std::string& data) override {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
#endif
@@ -149,7 +149,7 @@ namespace osmium {
}
}
- void close() final {
+ void close() override {
if (m_gzfile) {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
@@ -174,7 +174,7 @@ namespace osmium {
}; // class GzipCompressor
- class GzipDecompressor : public Decompressor {
+ class GzipDecompressor final : public Decompressor {
gzFile m_gzfile = nullptr;
@@ -200,7 +200,7 @@ namespace osmium {
GzipDecompressor(GzipDecompressor&&) = delete;
GzipDecompressor& operator=(GzipDecompressor&&) = delete;
- ~GzipDecompressor() noexcept final {
+ ~GzipDecompressor() noexcept {
try {
close();
} catch (...) {
@@ -208,7 +208,7 @@ namespace osmium {
}
}
- std::string read() final {
+ std::string read() override {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
#endif
@@ -226,7 +226,7 @@ namespace osmium {
return buffer;
}
- void close() final {
+ void close() override {
if (m_gzfile) {
#ifdef _MSC_VER
osmium::detail::disable_invalid_parameter_handler diph;
@@ -241,7 +241,7 @@ namespace osmium {
}; // class GzipDecompressor
- class GzipBufferDecompressor : public Decompressor {
+ class GzipBufferDecompressor final : public Decompressor {
const char* m_buffer;
std::size_t m_buffer_size;
@@ -272,7 +272,7 @@ namespace osmium {
GzipBufferDecompressor(GzipBufferDecompressor&&) = delete;
GzipBufferDecompressor& operator=(GzipBufferDecompressor&&) = delete;
- ~GzipBufferDecompressor() noexcept final {
+ ~GzipBufferDecompressor() noexcept {
try {
close();
} catch (...) {
@@ -280,7 +280,7 @@ namespace osmium {
}
}
- std::string read() final {
+ std::string read() override {
std::string output;
if (m_buffer) {
@@ -309,7 +309,7 @@ namespace osmium {
return output;
}
- void close() final {
+ void close() override {
inflateEnd(&m_zstream);
}
=====================================
include/osmium/version.hpp
=====================================
@@ -35,8 +35,8 @@ DEALINGS IN THE SOFTWARE.
#define LIBOSMIUM_VERSION_MAJOR 2
#define LIBOSMIUM_VERSION_MINOR 15
-#define LIBOSMIUM_VERSION_PATCH 5
+#define LIBOSMIUM_VERSION_PATCH 6
-#define LIBOSMIUM_VERSION_STRING "2.15.5"
+#define LIBOSMIUM_VERSION_STRING "2.15.6"
#endif // OSMIUM_VERSION_HPP
=====================================
test/t/index/test_id_set.cpp
=====================================
@@ -147,6 +147,14 @@ TEST_CASE("Basic functionality of IdSetSmall") {
REQUIRE(s.get(17));
REQUIRE(s.get(28));
REQUIRE_FALSE(s.empty());
+ const auto size = s.size();
+
+ // Setting the same id as last time doesn't grow the size
+ s.set(28);
+ REQUIRE(s.get(17));
+ REQUIRE(s.get(28));
+ REQUIRE_FALSE(s.empty());
+ REQUIRE(size == s.size());
s.clear();
REQUIRE(s.empty());
@@ -216,3 +224,31 @@ TEST_CASE("Iterating over IdSetSmall") {
REQUIRE(it == s.end());
}
+TEST_CASE("Merge two IdSetSmall") {
+ osmium::index::IdSetSmall<osmium::unsigned_object_id_type> s1;
+ osmium::index::IdSetSmall<osmium::unsigned_object_id_type> s2;
+
+ s1.set(23);
+ s1.set(2);
+ s1.set(7);
+ s1.set(55);
+ s1.set(42);
+ s1.set(7);
+
+ s2.set(2);
+ s2.set(32);
+ s2.set(8);
+ s2.set(55);
+ s2.set(1);
+
+ s1.sort_unique();
+ REQUIRE(s1.size() == 5);
+ s2.sort_unique();
+ REQUIRE(s2.size() == 5);
+ s1.merge_sorted(s2);
+ REQUIRE(s1.size() == 8);
+
+ const auto ids = {1, 2, 7, 8, 23, 32, 42, 55};
+ REQUIRE(std::equal(s1.cbegin(), s1.cend(), ids.begin()));
+}
+
=====================================
test/t/io/test_reader_with_mock_decompression.cpp
=====================================
@@ -14,7 +14,7 @@
// constructor it can be instructed to throw an exception in specific parts
// of its code. This is then used to test the internals of the Reader.
-class MockDecompressor : public osmium::io::Decompressor {
+class MockDecompressor final : public osmium::io::Decompressor {
std::string m_fail_in;
int m_read_count = 0;
@@ -34,7 +34,7 @@ public:
MockDecompressor(MockDecompressor&&) = delete;
MockDecompressor& operator=(MockDecompressor&&) = delete;
- ~MockDecompressor() noexcept final = default;
+ ~MockDecompressor() noexcept = default;
static void add_node(std::string& s, int i) {
s += "<node id='";
@@ -42,7 +42,7 @@ public:
s += "' version='1' timestamp='2014-01-01T00:00:00Z' uid='1' user='test' changeset='1' lon='1.02' lat='1.02'/>\n";
}
- std::string read() final {
+ std::string read() override {
std::string buffer;
++m_read_count;
@@ -68,7 +68,7 @@ public:
return buffer;
}
- void close() final {
+ void close() override {
if (m_fail_in == "close") {
throw std::runtime_error{"error close"};
}
=====================================
test/t/io/test_writer_with_mock_compression.cpp
=====================================
@@ -10,7 +10,7 @@
#include <string>
#include <utility>
-class MockCompressor : public osmium::io::Compressor {
+class MockCompressor final : public osmium::io::Compressor {
std::string m_fail_in;
@@ -30,15 +30,15 @@ public:
MockCompressor(MockCompressor&&) = delete;
MockCompressor& operator=(MockCompressor&&) = delete;
- ~MockCompressor() noexcept final = default;
+ ~MockCompressor() noexcept = default;
- void write(const std::string& /*data*/) final {
+ void write(const std::string& /*data*/) override {
if (m_fail_in == "write") {
throw std::logic_error{"write"};
}
}
- void close() final {
+ void close() override {
if (m_fail_in == "close") {
throw std::logic_error{"close"};
}
View it on GitLab: https://salsa.debian.org/debian-gis-team/libosmium/-/compare/369a2119f1c9021714c27a39f9c539382e0afd40...044ddf0643320771d8e89609ef772e52398ff355
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/libosmium/-/compare/369a2119f1c9021714c27a39f9c539382e0afd40...044ddf0643320771d8e89609ef772e52398ff355
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20200703/897964b7/attachment-0001.html>
More information about the Pkg-grass-devel
mailing list