Index: src/liblogger/TLogFileData.cpp =================================================================== diff -u -N -rd89ed8602b3992f26835fe68cb6e89c6d1270044 -rebc7fabbd2d59f9a0f723ea480b5374cc393ec12 --- src/liblogger/TLogFileData.cpp (.../TLogFileData.cpp) (revision d89ed8602b3992f26835fe68cb6e89c6d1270044) +++ src/liblogger/TLogFileData.cpp (.../TLogFileData.cpp) (revision ebc7fabbd2d59f9a0f723ea480b5374cc393ec12) @@ -51,18 +51,28 @@ void TLogFileData::PushLogEntry(std::wstring strLine) { - boost::unique_lock lock(m_mutex); if(m_spLogFile) { - m_listEntries.emplace_back(strLine); + boost::unique_lock lock(m_mutex); + m_listEntries.push_back(strLine); SetEvent(m_spHasEntriesEvent.get()); } } void TLogFileData::StoreLogEntries() { if(m_spLogFile) - m_spLogFile->Write(m_listEntries); + { + std::list listEntries; + + { + boost::unique_lock lock(m_mutex); + std::swap(listEntries, m_listEntries); + ResetEvent(m_spHasEntriesEvent.get()); + } + + m_spLogFile->Write(listEntries); + } } void TLogFileData::CloseUnusedFile()