Browse Source

Correct memory leak

Correct memory leak after creating a network party
pull/302/head
Mathieu Maret 7 years ago committed by Anders Jenbo
parent
commit
3ec16ee3c5
  1. 1
      SourceS/miniwin/misc.h
  2. 2
      SourceX/miniwin/misc_io.cpp
  3. 12
      SourceX/miniwin/thread.cpp

1
SourceS/miniwin/misc.h

@ -187,6 +187,7 @@ WINBOOL WINAPI CloseHandle(HANDLE hObject);
HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState,
LPCSTR lpName);
BOOL CloseEvent(HANDLE event);
BOOL WINAPI SetEvent(HANDLE hEvent);
BOOL WINAPI ResetEvent(HANDLE hEvent);
int WINAPI WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);

2
SourceX/miniwin/misc_io.cpp

@ -127,7 +127,7 @@ WINBOOL CloseHandle(HANDLE hObject)
{
memfile *file = static_cast<memfile *>(hObject);
if (files.find(file) == files.end())
return true;
return CloseEvent(hObject);
std::unique_ptr<memfile> ufile(file); // ensure that delete file is
// called on returning
files.erase(file);

12
SourceX/miniwin/thread.cpp

@ -129,6 +129,18 @@ HANDLE CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualRese
return ret;
}
BOOL CloseEvent(HANDLE hObject)
{
struct event_emul *event = static_cast<struct event_emul *>(hObject);
if (events.find((uintptr_t)event) == events.end())
return false;
SDL_DestroyCond(event->cond);
SDL_DestroyMutex(event->mutex);
events.erase((uintptr_t)event);
free(event);
return true;
}
BOOL SetEvent(HANDLE hEvent)
{
struct event_emul *e = (struct event_emul *)hEvent;

Loading…
Cancel
Save