Index: src/libchengine/FeedbackManager.cpp =================================================================== diff -u -N -rb9453afbc6264bc3f3c6a7f86fadab7744e0fb16 -rf01ed9a0279a52c96a7272273ef19e57f7670f4a --- src/libchengine/FeedbackManager.cpp (.../FeedbackManager.cpp) (revision b9453afbc6264bc3f3c6a7f86fadab7744e0fb16) +++ src/libchengine/FeedbackManager.cpp (.../FeedbackManager.cpp) (revision f01ed9a0279a52c96a7272273ef19e57f7670f4a) @@ -94,22 +94,27 @@ } if(eResult == eResult_Unknown) { - FeedbackAlreadyExistsRuleList newRules; + FeedbackRules modRules; TString strNewPath = suggestedPath.ToWString(); { + { + boost::shared_lock lock(m_lock); + modRules = m_feedbackRules; + } + TScopedRunningTimeTrackerPause scopedTimePause(m_pTimeTracker); TScopedRunningTimeTrackerPause scopedSecondaryTimePause(m_pSecondaryTimeTracker); - eResult = m_spFeedbackHandler->FileAlreadyExists(*spSrcFileInfo, rDstFileInfo, strNewPath, newRules); + eResult = m_spFeedbackHandler->FileAlreadyExists(*spSrcFileInfo, rDstFileInfo, strNewPath, modRules); } if(eResult != eResult_Unknown) { bAutomatedResponse = false; - if(!newRules.IsEmpty()) + { boost::unique_lock lock(m_lock); - m_feedbackRules.GetAlreadyExistsRules().Merge(newRules); + m_feedbackRules = modRules; } - else if(eResult == eResult_Rename) + if(eResult == eResult_Rename) { spSrcFileInfo->SetDstRelativePath(PathFromWString(strNewPath)); }