diff --git a/src/data.cpp b/src/data.cpp index 939960a5..36fe78e2 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -410,13 +410,18 @@ std::vector flatten ( { std::vector all; - if (! interval.range.ended ()) + if (interval.range.open ()) { all.push_back (interval); } else { - for (auto& result : subtractRanges (interval.range, {interval.range}, exclusions)) + std::vector enclosed; + for (auto& e : exclusions) + if (interval.range.encloses (e)) + enclosed.push_back (e); + + for (auto& result : subtractRanges (interval.range, {interval.range}, enclosed)) { Interval chunk {interval}; chunk.range = result;