From 25edc91976c84cdb571c63e7f10df12a1f22fa04 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sat, 28 Jan 2023 14:19:55 +0100 Subject: [PATCH] #2704 retain kernel pool to free cache --- src/ifcgeom/IfcGeomIteratorImplementation.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ifcgeom/IfcGeomIteratorImplementation.h b/src/ifcgeom/IfcGeomIteratorImplementation.h index 88083d6643..4f7ab5ecba 100644 --- a/src/ifcgeom/IfcGeomIteratorImplementation.h +++ b/src/ifcgeom/IfcGeomIteratorImplementation.h @@ -132,8 +132,12 @@ namespace IfcGeom { MAKE_TYPE_NAME(IteratorImplementation_)(const MAKE_TYPE_NAME(IteratorImplementation_)&); // N/I MAKE_TYPE_NAME(IteratorImplementation_)& operator=(const MAKE_TYPE_NAME(IteratorImplementation_)&); // N/I + // When single-threaded MAKE_TYPE_NAME(Kernel) kernel; + // When multi-threaded + std::vector kernel_pool; + IteratorSettings settings; IfcParse::IfcFile* ifc_file; std::vector filters_; @@ -312,7 +316,6 @@ namespace IfcGeom { conc_threads = tasks_.size(); } - std::vector kernel_pool; kernel_pool.reserve(conc_threads); for (unsigned i = 0; i < conc_threads; ++i) { kernel_pool.push_back(new MAKE_TYPE_NAME(Kernel)(kernel)); @@ -1219,6 +1222,10 @@ namespace IfcGeom { delete p; } + for (auto& k : kernel_pool) { + delete k; + } + free_shapes(); } };