diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 73c5a25ce..e6dae3435 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -77,6 +77,8 @@ void Print::delete_object(size_t idx) { PrintObjectPtrs::iterator i = this->objects.begin() + idx; + if (i >= this->objects.end()) + throw InvalidObjectException(); // before deleting object, invalidate all of its steps in order to // invalidate all of the dependent ones in Print diff --git a/xs/src/libslic3r/Print.hpp b/xs/src/libslic3r/Print.hpp index 7f83c684f..f0c9dfd5c 100644 --- a/xs/src/libslic3r/Print.hpp +++ b/xs/src/libslic3r/Print.hpp @@ -16,8 +16,12 @@ #include "SlicingAdaptive.hpp" #include "LayerHeightSpline.hpp" +#include + namespace Slic3r { +class InvalidObjectException : public std::exception {}; + class Print; class PrintObject; class ModelObject;