diff options
author | George Hazan <george.hazan@gmail.com> | 2015-02-01 10:51:51 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2015-02-01 10:51:51 +0000 |
commit | 57a9a439a1fa94bc6c1d59230eae3a5360ff8272 (patch) | |
tree | 55193f66bb75a0c4ec0ba59ea8a85b22638acefc /protocols/WhatsApp/src/utils.h | |
parent | ace37acd4bd624593f97e8ed66383d9eb11e2d32 (diff) |
fix for major handle leak
git-svn-id: http://svn.miranda-ng.org/main/trunk@11972 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/WhatsApp/src/utils.h')
-rw-r--r-- | protocols/WhatsApp/src/utils.h | 45 |
1 files changed, 8 insertions, 37 deletions
diff --git a/protocols/WhatsApp/src/utils.h b/protocols/WhatsApp/src/utils.h index 7f0d903d1b..a14a707a14 100644 --- a/protocols/WhatsApp/src/utils.h +++ b/protocols/WhatsApp/src/utils.h @@ -3,53 +3,24 @@ #include "WhatsAPI++/IMutex.h"
-class ScopedLock
-{
-public:
- ScopedLock(HANDLE h, int t = INFINITE) : handle_(h), timeout_(t)
- {
- WaitForSingleObject(handle_, timeout_);
- }
- ~ScopedLock()
- {
- if (handle_)
- ReleaseMutex(handle_);
- }
- void Unlock()
- {
- ReleaseMutex(handle_);
- handle_ = 0;
- }
-private:
- HANDLE handle_;
- int timeout_;
-};
-
class Mutex : public IMutex
{
-private:
- HANDLE handle;
-public:
- Mutex() : handle(NULL) {}
+ mir_cs m_cs;
- virtual ~Mutex()
- {
- if (this->handle != NULL) {
- ReleaseMutex(this->handle);
- }
- }
+public:
+ Mutex() {}
+ virtual ~Mutex() {}
virtual void lock()
{
- if (this->handle == NULL) {
- this->handle = CreateMutex(NULL, FALSE, NULL);
- }
+ CRITICAL_SECTION &cs = m_cs;
+ ::EnterCriticalSection(&cs);
}
virtual void unlock()
{
- ReleaseMutex(this->handle);
- this->handle = NULL;
+ CRITICAL_SECTION &cs = m_cs;
+ ::LeaveCriticalSection(&cs);
}
};
|