Fix crash on inconsistent input

This commit is contained in:
Lukáš Hejl 2020-08-30 20:38:07 +02:00
parent b28f9b8935
commit 8e6760e033
2 changed files with 11 additions and 3 deletions

View file

@ -149,7 +149,7 @@ std::unique_ptr<FillAdaptive_Internal::Octree> FillAdaptive::build_octree(
{ {
using namespace FillAdaptive_Internal; using namespace FillAdaptive_Internal;
if(line_spacing <= 0) if(line_spacing <= 0 || std::isnan(line_spacing))
{ {
return nullptr; return nullptr;
} }

View file

@ -434,8 +434,16 @@ void PrintObject::generate_support_material()
void PrintObject::prepare_adaptive_infill_data() void PrintObject::prepare_adaptive_infill_data()
{ {
float fill_density = this->print()->full_print_config().opt_float("fill_density"); const ConfigOptionFloatOrPercent* opt_fill_density = this->print()->full_print_config().option<ConfigOptionFloatOrPercent>("fill_density");
float infill_extrusion_width = this->print()->full_print_config().opt_float("infill_extrusion_width"); const ConfigOptionFloatOrPercent* opt_infill_extrusion_width = this->print()->full_print_config().option<ConfigOptionFloatOrPercent>("infill_extrusion_width");
if(opt_fill_density == nullptr || opt_infill_extrusion_width == nullptr || opt_fill_density->value <= 0 || opt_infill_extrusion_width->value <= 0)
{
return;
}
float fill_density = opt_fill_density->value;
float infill_extrusion_width = opt_infill_extrusion_width->value;
coordf_t line_spacing = infill_extrusion_width / ((fill_density / 100.0f) * 0.333333333f); coordf_t line_spacing = infill_extrusion_width / ((fill_density / 100.0f) * 0.333333333f);