diff --git a/src/domain/materials/MaterialRegistry.cpp b/src/domain/materials/MaterialRegistry.cpp index 757d247..f65913b 100644 --- a/src/domain/materials/MaterialRegistry.cpp +++ b/src/domain/materials/MaterialRegistry.cpp @@ -37,7 +37,8 @@ void MaterialRegistry::registerMaterialsFromJson(const std::string& jsonPath) for (const auto& item : json) { Material m = item.get(); - registerMaterial(m.id, std::move(m)); + auto id = m.id; // copy key before moving the object + registerMaterial(id, std::move(m)); } } catch (const std::exception& e) { std::cerr << "[MaterialRegistry] Error parsing " << jsonPath diff --git a/src/domain/physics/ParticleRegistry.cpp b/src/domain/physics/ParticleRegistry.cpp index 185e680..71dc164 100644 --- a/src/domain/physics/ParticleRegistry.cpp +++ b/src/domain/physics/ParticleRegistry.cpp @@ -34,7 +34,8 @@ void ParticleRegistry::registerParticlesFromJson(const std::string& jsonPath) } for (const auto& item : json) { Particle p = item.get(); - registerParticle(p.id, std::move(p)); + auto id = p.id; // copy key before moving the object + registerParticle(id, std::move(p)); } } catch (const std::exception& e) { std::cerr << "[ParticleRegistry] Error parsing " << jsonPath diff --git a/src/services/analysis/ThreadPool.cpp b/src/services/analysis/ThreadPool.cpp index 91865b5..dccec22 100644 --- a/src/services/analysis/ThreadPool.cpp +++ b/src/services/analysis/ThreadPool.cpp @@ -80,10 +80,10 @@ void ThreadPool::workerLoop() return; } + ++active_; task = std::move(tasks_.front()); tasks_.pop(); } - ++active_; task(); --active_; }