From 8ee86f99689a43025b41d4fc2c341be59d37b657 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Tue, 4 Jun 2019 17:03:58 +0200 Subject: [PATCH] Clean up glb tempfiles in case of error --- src/serializers/GltfSerializer.cpp | 10 +++++++--- src/serializers/GltfSerializer.h | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/serializers/GltfSerializer.cpp b/src/serializers/GltfSerializer.cpp index c20b0a292a..1f674d02bd 100644 --- a/src/serializers/GltfSerializer.cpp +++ b/src/serializers/GltfSerializer.cpp @@ -54,6 +54,13 @@ GltfSerializer::GltfSerializer(const std::string& filename, const SerializerSett , tmp_fstream2_(IfcUtil::path::from_utf8(tmp_filename2_).c_str(), std::ios_base::binary) {} +GltfSerializer::~GltfSerializer() { + tmp_fstream1_.close(); + tmp_fstream2_.close(); + IfcUtil::path::delete_file(tmp_filename1_); + IfcUtil::path::delete_file(tmp_filename2_); +} + bool GltfSerializer::ready() { return fstream_.is_open() && tmp_fstream1_.is_open() && tmp_fstream2_.is_open(); } @@ -323,9 +330,6 @@ void GltfSerializer::finalize() { fstream_ << ifs.rdbuf(); } write_padding(fstream_, binary_length); - - IfcUtil::path::delete_file(tmp_filename1_); - IfcUtil::path::delete_file(tmp_filename2_); } #endif diff --git a/src/serializers/GltfSerializer.h b/src/serializers/GltfSerializer.h index 34be625543..428aa074c8 100644 --- a/src/serializers/GltfSerializer.h +++ b/src/serializers/GltfSerializer.h @@ -39,7 +39,7 @@ private: int writeMaterial(const IfcGeom::Material& style); public: GltfSerializer(const std::string& filename, const SerializerSettings& settings); - virtual ~GltfSerializer() {} + virtual ~GltfSerializer(); bool ready(); void writeHeader(); void write(const IfcGeom::TriangulationElement* o);