Don't leak stuff-n-things, thank you Valgrind =)

- Major : Previously leaking interface threads
    - Major : Leak of FILE* resources in inflate routine
    - Minor : previous leak-on-exit of enumerated sound devices
This commit is contained in:
Aaron Culliney 2015-05-31 14:11:05 -07:00
parent 80b880550f
commit 3b13fc29a4
3 changed files with 18 additions and 13 deletions

View File

@ -245,6 +245,19 @@ bool DSZeroVoiceWritableBuffer(PVOICE Voice, char* pszDevName, DWORD dwBufferSiz
static UINT g_uDSInitRefCount = 0;
static void _destroy_enumerated_sound_devices(void) {
if (sound_devices) {
LOG("Destroying old device names...");
char **ptr = sound_devices;
while (*ptr) {
FREE(*ptr);
++ptr;
}
FREE(sound_devices);
sound_devices = NULL;
}
}
bool DSInit()
{
if(g_bDSAvailable)
@ -253,18 +266,7 @@ bool DSInit()
return true; // Already initialised successfully
}
if (sound_devices)
{
LOG("Destroying old device names...");
char **ptr = sound_devices;
while (*ptr)
{
FREE(*ptr);
++ptr;
}
FREE(sound_devices);
sound_devices = NULL;
}
_destroy_enumerated_sound_devices();
num_sound_devices = SoundSystemEnumerate(&sound_devices, MAX_SOUND_DEVICES);
HRESULT hr = (num_sound_devices <= 0);
if(FAILED(hr))
@ -308,6 +310,8 @@ bool DSInit()
void DSUninit()
{
_destroy_enumerated_sound_devices();
if(!g_bDSAvailable)
return;

View File

@ -1592,6 +1592,7 @@ void c_interface_begin(int current_key)
{
pthread_t t = 0;
pthread_create(&t, NULL, (void *)&interface_thread, (void *)((__SWORD_TYPE)current_key));
pthread_detach(t);
}
#endif

View File

@ -182,7 +182,7 @@ const char *inf(const char* const src, int *rawcount)
}
dst[len-3] = '\0';
FILE *dest = fopen(dst, "w+");
dest = fopen(dst, "w+");
if (dest == NULL) {
ERRLOG("Cannot open file '%s' for writing", dst);
break;