From 15620a2fc253b09ae7cb6c741a7430a69ff55db3 Mon Sep 17 00:00:00 2001
From: tamasmeszaros <meszaros.q@gmail.com>
Date: Sun, 2 Jun 2019 20:02:27 +0200
Subject: [PATCH] Fix unclosed file after export.

---
 src/libslic3r/Zipper.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/libslic3r/Zipper.cpp b/src/libslic3r/Zipper.cpp
index afeaa8eca..b95f08e04 100644
--- a/src/libslic3r/Zipper.cpp
+++ b/src/libslic3r/Zipper.cpp
@@ -22,6 +22,7 @@ class Zipper::Impl {
 public:
     mz_zip_archive arch;
     std::string m_zipname;
+    FILE *cfile = nullptr;
 
     static std::string get_errorstr(mz_zip_error mz_err)
     {
@@ -124,15 +125,15 @@ Zipper::Zipper(const std::string &zipfname, e_compression compression)
 
     memset(&m_impl->arch, 0, sizeof(m_impl->arch));
 
-    FILE *f = boost::nowide::fopen(zipfname.c_str(), "wb");
+    m_impl->cfile = boost::nowide::fopen(zipfname.c_str(), "wb");
 
-    if (f == nullptr) {
+    if (m_impl->cfile == nullptr) {
         m_impl->arch.m_last_error = MZ_ZIP_FILE_OPEN_FAILED;
         m_impl->blow_up();
     }
 
     // Initialize the archive data
-    if(!mz_zip_writer_init_cfile(&m_impl->arch, f, 0))
+    if(!mz_zip_writer_init_cfile(&m_impl->arch, m_impl->cfile, 0))
         m_impl->blow_up();
 }
 
@@ -151,6 +152,8 @@ Zipper::~Zipper()
     // The file should be closed no matter what...
     if(!mz_zip_writer_end(&m_impl->arch))
         BOOST_LOG_TRIVIAL(error) << m_impl->formatted_errorstr();
+
+    if(m_impl->cfile) fclose(m_impl->cfile);
 }
 
 Zipper::Zipper(Zipper &&m):