diff options
Diffstat (limited to 'src/2geom/sweep.cpp')
| -rw-r--r-- | src/2geom/sweep.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/2geom/sweep.cpp b/src/2geom/sweep.cpp index 1b8813990..227c822bd 100644 --- a/src/2geom/sweep.cpp +++ b/src/2geom/sweep.cpp @@ -9,8 +9,10 @@ std::vector<std::vector<unsigned> > sweep_bounds(std::vector<Rect> rs) { std::vector<std::vector<unsigned> > pairs(rs.size()); for(unsigned i = 0; i < rs.size(); i++) { - events.push_back(Event(rs[i].left(), i, false)); - events.push_back(Event(rs[i].right(), i, true)); + if(!rs[i].isEmpty()) { + events.push_back(Event(rs[i].left(), i, false)); + events.push_back(Event(rs[i].right(), i, true)); + } } std::sort(events.begin(), events.end()); @@ -45,8 +47,11 @@ std::vector<std::vector<unsigned> > sweep_bounds(std::vector<Rect> a, std::vecto unsigned sz = n ? b.size() : a.size(); events[n].reserve(sz*2); for(unsigned i = 0; i < sz; i++) { - events[n].push_back(Event(n ? b[i].left() : a[i].left(), i, false)); - events[n].push_back(Event(n ? b[i].right() : a[i].right(), i, true)); + Rect r = n ? b[i] : a[i]; + if(!r.isEmpty()) { + events[n].push_back(Event(r.left(), i, false)); + events[n].push_back(Event(r.right(), i, true)); + } } std::sort(events[n].begin(), events[n].end()); } |
