From 8fce5118069cae1bbe89f0e988d0ff67ffad2022 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 15 Aug 2019 16:15:17 +0200 Subject: [PATCH] Fix for issue #2765, arrange crash with custom beds --- src/libslic3r/Arrange.cpp | 5 ++++- src/libslic3r/Arrange.hpp | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) 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); }