diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index b4cfac9546..76ad81e299 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -492,8 +492,11 @@ BedShapeHint::BedShapeHint(const Polyline &bed) { m_type = BedShapes::bsCircle; m_bed.circ = c; } else { + if (m_type == BedShapes::bsIrregular) + m_bed.polygon.Slic3r::Polyline::~Polyline(); + m_type = BedShapes::bsIrregular; - m_bed.polygon = bed; + ::new (&m_bed.polygon) Polyline(bed); } } diff --git a/src/libslic3r/Arrange.hpp b/src/libslic3r/Arrange.hpp index c02393dd9e..3d405145e6 100644 --- a/src/libslic3r/Arrange.hpp +++ b/src/libslic3r/Arrange.hpp @@ -45,12 +45,12 @@ class BedShapeHint { Polyline polygon; InfiniteBed infbed{}; ~BedShape_u() {} - BedShape_u() {}; + BedShape_u() {} } m_bed; public: - BedShapeHint(){}; + BedShapeHint(){} /// Get a bed shape hint for arrange() from a naked Polyline. explicit BedShapeHint(const Polyline &polyl); @@ -73,7 +73,7 @@ public: { if (m_type == BedShapes::bsIrregular) m_bed.polygon.Slic3r::Polyline::~Polyline(); - }; + } BedShapeHint(const BedShapeHint &cpy) { *this = cpy; } BedShapeHint(BedShapeHint &&cpy) { *this = std::move(cpy); }