Fix for issue #2765, arrange crash with custom beds

This commit is contained in:
tamasmeszaros 2019-08-15 16:15:17 +02:00
parent 15744f021a
commit 8fce511806
2 changed files with 7 additions and 4 deletions

View file

@ -492,8 +492,11 @@ BedShapeHint::BedShapeHint(const Polyline &bed) {
m_type = BedShapes::bsCircle; m_type = BedShapes::bsCircle;
m_bed.circ = c; m_bed.circ = c;
} else { } else {
if (m_type == BedShapes::bsIrregular)
m_bed.polygon.Slic3r::Polyline::~Polyline();
m_type = BedShapes::bsIrregular; m_type = BedShapes::bsIrregular;
m_bed.polygon = bed; ::new (&m_bed.polygon) Polyline(bed);
} }
} }

View file

@ -45,12 +45,12 @@ class BedShapeHint {
Polyline polygon; Polyline polygon;
InfiniteBed infbed{}; InfiniteBed infbed{};
~BedShape_u() {} ~BedShape_u() {}
BedShape_u() {}; BedShape_u() {}
} m_bed; } m_bed;
public: public:
BedShapeHint(){}; BedShapeHint(){}
/// Get a bed shape hint for arrange() from a naked Polyline. /// Get a bed shape hint for arrange() from a naked Polyline.
explicit BedShapeHint(const Polyline &polyl); explicit BedShapeHint(const Polyline &polyl);
@ -73,7 +73,7 @@ public:
{ {
if (m_type == BedShapes::bsIrregular) if (m_type == BedShapes::bsIrregular)
m_bed.polygon.Slic3r::Polyline::~Polyline(); m_bed.polygon.Slic3r::Polyline::~Polyline();
}; }
BedShapeHint(const BedShapeHint &cpy) { *this = cpy; } BedShapeHint(const BedShapeHint &cpy) { *this = cpy; }
BedShapeHint(BedShapeHint &&cpy) { *this = std::move(cpy); } BedShapeHint(BedShapeHint &&cpy) { *this = std::move(cpy); }