From 8f3e0b6fb4fbaae177ef8c0acabadc914b2c5c4e Mon Sep 17 00:00:00 2001 From: supermerill Date: Sat, 21 Nov 2020 18:05:24 +0100 Subject: [PATCH] #693 fix crash when using fan kickstart without fan startup time --- src/libslic3r/GCode/FanMover.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode/FanMover.cpp b/src/libslic3r/GCode/FanMover.cpp index 4037dda22..8ce7d7d2c 100644 --- a/src/libslic3r/GCode/FanMover.cpp +++ b/src/libslic3r/GCode/FanMover.cpp @@ -238,14 +238,14 @@ void FanMover::_process_gcode_line(GCodeReader& reader, const GCodeReader::GCode { fan_speed = get_fan_speed(line.raw(), m_writer.config.gcode_flavor); if (fan_speed > 0 && !m_is_custom_gcode) { - if (!only_overhangs || current_role != ExtrusionRole::erOverhangPerimeter) { + if (nb_seconds_delay > 0 && (!only_overhangs || current_role != ExtrusionRole::erOverhangPerimeter)) { // this M106 need to go in the past //check if we have !( kickstart and not in slowdown ) if (kickstart <= 0 || fan_speed < m_current_fan_speed) { // first erase everything lower that that value _remove_slow_fan(fan_speed, m_buffer_time_size + 1); // then write the fan command - if (m_buffer_time_size > nb_seconds_delay) { + if (std::abs(m_buffer_time_size - nb_seconds_delay) < EPSILON) { _print_in_middle_G1(m_buffer.front(), m_buffer_time_size - nb_seconds_delay, line.raw()); remove_from_buffer(m_buffer.begin()); } else { @@ -274,8 +274,8 @@ void FanMover::_process_gcode_line(GCodeReader& reader, const GCodeReader::GCode //found, stop break; } - ++it; time_count -= it->time; + ++it; } } } else {