Improving 3MF import: checking for invalid data.

This commit is contained in:
Vojtech Bubnik 2021-02-12 16:46:49 +01:00
parent 7e6da2903c
commit f9f99c4889

View File

@ -685,12 +685,12 @@ namespace Slic3r {
close_zip_reader(&archive); close_zip_reader(&archive);
for (const IdToModelObjectMap::value_type& object : m_objects) for (const IdToModelObjectMap::value_type& object : m_objects) {
{ if (object.second >= m_model->objects.size()) {
ModelObject *model_object = m_model->objects[object.second]; add_error("Unable to find object");
ObjectMetadata::VolumeMetadataList volumes; return false;
ObjectMetadata::VolumeMetadataList* volumes_ptr = nullptr; }
ModelObject* model_object = m_model->objects[object.second];
IdToGeometryMap::const_iterator obj_geometry = m_geometries.find(object.first); IdToGeometryMap::const_iterator obj_geometry = m_geometries.find(object.first);
if (obj_geometry == m_geometries.end()) if (obj_geometry == m_geometries.end())
{ {
@ -1396,8 +1396,11 @@ namespace Slic3r {
bool _3MF_Importer::_handle_end_model() bool _3MF_Importer::_handle_end_model()
{ {
// deletes all non-built or non-instanced objects // deletes all non-built or non-instanced objects
for (const IdToModelObjectMap::value_type& object : m_objects) for (const IdToModelObjectMap::value_type& object : m_objects) {
{ if (object.second >= m_model->objects.size()) {
add_error("Unable to find object");
return false;
}
ModelObject *model_object = m_model->objects[object.second]; ModelObject *model_object = m_model->objects[object.second];
if ((model_object != nullptr) && (model_object->instances.size() == 0)) if ((model_object != nullptr) && (model_object->instances.size() == 0))
m_model->delete_object(model_object); m_model->delete_object(model_object);