Skip to content

Commit 38741c6

Browse files
committed
Bugfix: Possible dereference of invalid iterator in area assembler
This is in the legacy area assembler that takes old-style multipolygons into account, so modern code that is not working with history data is not affected.
1 parent 0a51d0e commit 38741c6

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

include/osmium/area/assembler_legacy.hpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,8 +336,11 @@ namespace osmium {
336336
osmium::tags::KeyFilter::iterator way_fi_end(std::cref(filter()), way.tags().cend(), way.tags().cend());
337337
osmium::tags::KeyFilter::iterator area_fi_begin(std::cref(filter()), area_tags.cbegin(), area_tags.cend());
338338
osmium::tags::KeyFilter::iterator area_fi_end(std::cref(filter()), area_tags.cend(), area_tags.cend());
339-
340-
if (!std::equal(way_fi_begin, way_fi_end, area_fi_begin) || d != std::distance(area_fi_begin, area_fi_end)) {
339+
#ifdef __cpp_lib_robust_nonmodifying_seq_ops
340+
if (!std::equal(way_fi_begin, way_fi_end, area_fi_begin, area_fi_end)) {
341+
#else
342+
if (d != std::distance(area_fi_begin, area_fi_end) || !std::equal(way_fi_begin, way_fi_end, area_fi_begin)) {
343+
#endif
341344
ways_that_should_be_areas.push_back(&way);
342345
} else {
343346
++stats().inner_with_same_tags;

0 commit comments

Comments
 (0)