From 030dc6460a2fe91cea60a91010cae5863364d102 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Thu, 17 Apr 2025 15:26:18 +0200 Subject: [PATCH] Prevent double free in iterator with output=native --- src/ifcgeom/Iterator.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ifcgeom/Iterator.h b/src/ifcgeom/Iterator.h index 199566bc14..d1d3a916a3 100644 --- a/src/ifcgeom/Iterator.h +++ b/src/ifcgeom/Iterator.h @@ -664,8 +664,10 @@ namespace IfcGeom { const IfcUtil::IfcBaseClass* next() { using std::chrono::high_resolution_clock; + if (*native_task_result_iterator_ != *task_result_iterator_) { + delete* native_task_result_iterator_; + } delete *task_result_iterator_; - delete *native_task_result_iterator_; if (num_threads_ != 1) { if (!wait_for_element()) { @@ -896,8 +898,11 @@ namespace IfcGeom { if (task_result_ptr_initialized) { while (task_result_iterator_ != --all_processed_elements_.end()) { + if (*native_task_result_iterator_ != *task_result_iterator_) { + delete* native_task_result_iterator_; + } delete *task_result_iterator_++; - delete *native_task_result_iterator_++; + native_task_result_iterator_++; } }