diff --git a/xs/src/libslic3r/SurfaceCollection.cpp b/xs/src/libslic3r/SurfaceCollection.cpp index 04f449dc2..cb58afaca 100644 --- a/xs/src/libslic3r/SurfaceCollection.cpp +++ b/xs/src/libslic3r/SurfaceCollection.cpp @@ -93,24 +93,26 @@ template bool SurfaceCollection::any_bottom_contains(const Polyline &i SurfacesPtr SurfaceCollection::filter_by_type(std::initializer_list types) { - size_t n {0}; - for (const auto& t : types) - n |= t; SurfacesPtr ss; - for (auto& s : this->surfaces) - if ((s.surface_type & n) == s.surface_type) ss.push_back(&s); + for (Surface& s : this->surfaces) + for (const SurfaceType& t : types) + if (s.surface_type == t) { + ss.push_back(&s); + break; + } return ss; } SurfacesConstPtr SurfaceCollection::filter_by_type(std::initializer_list types) const { - size_t n {0}; - for (const auto& t : types) - n |= t; SurfacesConstPtr ss; - for (auto& s : this->surfaces) - if ((s.surface_type & n) == s.surface_type) ss.push_back(&s); + for (Surface& s : this->surfaces) + for (const SurfaceType& t : types) + if (s.surface_type == t) { + ss.push_back(&s); + break; + } return ss; }