diff --git a/src/common/profiler.cpp b/src/common/profiler.cpp index f94a92ec..f80ae849 100644 --- a/src/common/profiler.cpp +++ b/src/common/profiler.cpp @@ -53,6 +53,8 @@ void CProfiler::StopPerformanceCounter(PerformanceCounter counter) SystemTimeStamp* timeStamp = m_systemUtils->CreateTimeStamp(); m_systemUtils->GetCurrentTimeStamp(timeStamp); m_performanceCounters[counter] += m_systemUtils->TimeStampExactDiff(m_runningPerformanceCounters.top(), timeStamp); + m_systemUtils->DestroyTimeStamp(timeStamp); + m_systemUtils->DestroyTimeStamp(m_runningPerformanceCounters.top()); m_runningPerformanceCounters.pop(); if (counter == PCNT_ALL) diff --git a/src/common/system/system.cpp b/src/common/system/system.cpp index 210b4a75..ce594ea7 100644 --- a/src/common/system/system.cpp +++ b/src/common/system/system.cpp @@ -36,6 +36,7 @@ #include #include +#include std::unique_ptr CSystemUtils::Create() @@ -152,11 +153,7 @@ SystemTimeStamp* CSystemUtils::CreateTimeStamp() void CSystemUtils::DestroyTimeStamp(SystemTimeStamp *stamp) { - for (auto& timeStamp : m_timeStamps) - { - if (timeStamp.get() == stamp) - timeStamp.reset(); - } + m_timeStamps.erase(std::remove_if(m_timeStamps.begin(), m_timeStamps.end(), [&](const std::unique_ptr& timeStamp) { return timeStamp.get() == stamp; })); } void CSystemUtils::CopyTimeStamp(SystemTimeStamp *dst, SystemTimeStamp *src)