From 3e15d22f35ac94b4859be5fe4535122a162f6695 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 8 Apr 2020 17:22:27 +0200 Subject: [PATCH] Fixed a crash when switching to Preview --- src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp | 5 +++-- src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp b/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp index 3ac1c39377..d26068ca24 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp @@ -73,8 +73,9 @@ Raycaster* CommonGizmosDataPool::raycaster() const ObjectClipper* CommonGizmosDataPool::object_clipper() const { ObjectClipper* oc = dynamic_cast(m_data.at(CommonGizmosDataID::ObjectClipper).get()); - assert(oc); - return oc->is_valid() ? oc : nullptr; + // ObjectClipper is used from outside the gizmos to report current clipping plane. + // This function can be called when oc is nullptr. + return (oc && oc->is_valid()) ? oc : nullptr; } SupportsClipper* CommonGizmosDataPool::supports_clipper() const diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index ac7fe72e56..685e49d367 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -412,7 +412,8 @@ bool GLGizmosManager::gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_p ClippingPlane GLGizmosManager::get_clipping_plane() const { - if (! m_common_gizmos_data->object_clipper() + if (! m_common_gizmos_data + || ! m_common_gizmos_data->object_clipper() || m_common_gizmos_data->object_clipper()->get_position() == 0.) return ClippingPlane::ClipsNothing(); else {