From: Guy H <da...@us...> - 2005-02-09 21:16:29
|
Update of /cvsroot/anyedit/AnyEditv2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18267/AnyEditv2 Modified Files: AnyEdit.cpp AnyEdit.h Log Message: Locked tags updating more securely so there will be no crashes Index: AnyEdit.cpp =================================================================== RCS file: /cvsroot/anyedit/AnyEditv2/AnyEdit.cpp,v retrieving revision 1.106 retrieving revision 1.107 diff -C2 -d -r1.106 -r1.107 *** AnyEdit.cpp 4 Feb 2005 14:01:29 -0000 1.106 --- AnyEdit.cpp 9 Feb 2005 21:16:12 -0000 1.107 *************** *** 1805,1808 **** --- 1805,1811 ---- bRet |= (*iNotify)->OnIdleNotify(lCount); + + CSingleLock lock(&m_critMapUpdaters, TRUE); + // Note: DoNextUpdate should NEVER EVER delete a AETagMap, or we'll get a deadlock! for (std::map<AETagMap*, AETagMapUpdater*>::iterator i = m_mTagMapUpdaters.begin(); i != m_mTagMapUpdaters.end(); i++) { *************** *** 1813,1816 **** --- 1816,1820 ---- } } + lock.Unlock(); return bRet; *************** *** 1975,1978 **** --- 1979,1983 ---- AETagMapUpdater* CAnyEditApp::FindTagMapUpdater(AETagMap* pMap) { + CSingleLock lock(&m_critMapUpdaters, TRUE); std::map<AETagMap*, AETagMapUpdater*>::iterator i = m_mTagMapUpdaters.find(pMap); if (i == m_mTagMapUpdaters.end()) *************** *** 1983,1986 **** --- 1988,1992 ---- void CAnyEditApp::AddTagMap(AETagMap* pMap) { + CSingleLock lock(&m_critMapUpdaters, TRUE); ASSERT(m_mTagMapUpdaters.find(pMap) == m_mTagMapUpdaters.end()); m_mTagMapUpdaters[pMap] = new AETagMapUpdater(pMap); *************** *** 1989,1992 **** --- 1995,1999 ---- void CAnyEditApp::RemoveTagMap(AETagMap* pMap) { + CSingleLock lock(&m_critMapUpdaters, TRUE); std::map<AETagMap*, AETagMapUpdater*>::iterator i = m_mTagMapUpdaters.find(pMap); ASSERT(i != m_mTagMapUpdaters.end()); Index: AnyEdit.h =================================================================== RCS file: /cvsroot/anyedit/AnyEditv2/AnyEdit.h,v retrieving revision 1.68 retrieving revision 1.69 diff -C2 -d -r1.68 -r1.69 *** AnyEdit.h 4 Dec 2004 09:01:24 -0000 1.68 --- AnyEdit.h 9 Feb 2005 21:16:15 -0000 1.69 *************** *** 139,142 **** --- 139,143 ---- CCreateTagThread* m_pCreateTags; std::map<AETagMap*, AETagMapUpdater*> m_mTagMapUpdaters; + CCriticalSection m_critMapUpdaters; // The main user config file for AnyEdit. |