diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index ff00768807..f2deba0467 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2642,9 +2642,23 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill return gcode; } -bool GCode::GCodeOutputStream::is_error() const { return ::ferror(f); } -void GCode::GCodeOutputStream::flush() { ::fflush(f); } -void GCode::GCodeOutputStream::close() { if (f) ::fclose(f); } +bool GCode::GCodeOutputStream::is_error() const +{ + return ::ferror(this->f); +} + +void GCode::GCodeOutputStream::flush() +{ + ::fflush(this->f); +} + +void GCode::GCodeOutputStream::close() +{ + if (this->f) { + ::fclose(this->f); + this->f = nullptr; + } +} void GCode::GCodeOutputStream::write(const char *what) { diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index ec586dbef7..60af399c06 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -350,7 +350,12 @@ void GCodeProcessor::TimeProcessor::reset() struct FilePtr { FilePtr(FILE *f) : f(f) {} ~FilePtr() { this->close(); } - void close() { if (f) ::fclose(f); } + void close() { + if (this->f) { + ::fclose(this->f); + this->f = nullptr; + } + } FILE* f = nullptr; };