Index: src/libchcore/TIpcMutex.cpp =================================================================== diff -u -N -r306fbe693c70290af9de9a5779084a697de22d75 -ra6b040ed1b328ac7ad30882b07b7ca41e812bbb9 --- src/libchcore/TIpcMutex.cpp (.../TIpcMutex.cpp) (revision 306fbe693c70290af9de9a5779084a697de22d75) +++ src/libchcore/TIpcMutex.cpp (.../TIpcMutex.cpp) (revision a6b040ed1b328ac7ad30882b07b7ca41e812bbb9) @@ -35,15 +35,13 @@ TIpcMutex::~TIpcMutex() { - if(m_bLocked) - Unlock(); - - if(m_hMutex) - CloseHandle(m_hMutex); + Close(); } void TIpcMutex::CreateMutex(const wchar_t* pszName) { + Close(); + m_hMutex = ::CreateMutex(nullptr, FALSE, pszName); if(!m_hMutex) throw TCoreWin32Exception(eErr_CannotCreateMutex, GetLastError(), L"Cannot create mutex", LOCATION); @@ -76,4 +74,13 @@ ReleaseMutex(m_hMutex); m_bLocked = false; } + + void TIpcMutex::Close() + { + if (m_bLocked) + Unlock(); + + if (m_hMutex) + CloseHandle(m_hMutex); + } }