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):