diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 610d4aace..12fd69431 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -101,7 +101,15 @@ sub export_gcode { # close our gcode file close $fh; - rename $tempfile, $output_file if $tempfile; + if ($tempfile) { + my $i; + for ($i = 0; $i < 5; $i += 1) { + last if (rename Slic3r::encode_path($tempfile), Slic3r::encode_path($file)); + # Wait for 1/4 seconds and try to rename once again. + select(undef, undef, undef, 0.25); + } + Slic3r::debugf "Failed to remove the output G-code file from $tempfile to $file. Is $tempfile locked?\n" if ($i == 5); + } } # run post-processing scripts