summaryrefslogtreecommitdiffstats
path: root/src/2geom/sweep.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/2geom/sweep.cpp')
-rw-r--r--src/2geom/sweep.cpp13
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());
}