Commit c03716ba authored by Shiqing's avatar Shiqing

Fix a few tiny memory leaks

parent f6561013
...@@ -2171,6 +2171,7 @@ struct ma_context ...@@ -2171,6 +2171,7 @@ struct ma_context
{ {
ma_handle hCoreFoundation; ma_handle hCoreFoundation;
ma_proc CFStringGetCString; ma_proc CFStringGetCString;
ma_proc CFRelease;
ma_handle hCoreAudio; ma_handle hCoreAudio;
ma_proc AudioObjectGetPropertyData; ma_proc AudioObjectGetPropertyData;
...@@ -16493,6 +16494,7 @@ Core Audio Backend ...@@ -16493,6 +16494,7 @@ Core Audio Backend
/* CoreFoundation */ /* CoreFoundation */
typedef Boolean (* ma_CFStringGetCString_proc)(CFStringRef theString, char* buffer, CFIndex bufferSize, CFStringEncoding encoding); typedef Boolean (* ma_CFStringGetCString_proc)(CFStringRef theString, char* buffer, CFIndex bufferSize, CFStringEncoding encoding);
typedef void (* ma_CFRelease_proc)(CFTypeRef cf);
/* CoreAudio */ /* CoreAudio */
#if defined(MA_APPLE_DESKTOP) #if defined(MA_APPLE_DESKTOP)
...@@ -16921,6 +16923,7 @@ ma_result ma_get_AudioObject_uid(ma_context* pContext, AudioObjectID objectID, s ...@@ -16921,6 +16923,7 @@ ma_result ma_get_AudioObject_uid(ma_context* pContext, AudioObjectID objectID, s
return MA_ERROR; return MA_ERROR;
} }
((ma_CFRelease_proc)pContext->coreaudio.CFRelease)(uid);
return MA_SUCCESS; return MA_SUCCESS;
} }
...@@ -16947,6 +16950,7 @@ ma_result ma_get_AudioObject_name(ma_context* pContext, AudioObjectID objectID, ...@@ -16947,6 +16950,7 @@ ma_result ma_get_AudioObject_name(ma_context* pContext, AudioObjectID objectID,
return MA_ERROR; return MA_ERROR;
} }
((ma_CFRelease_proc)pContext->coreaudio.CFRelease)(deviceName);
return MA_SUCCESS; return MA_SUCCESS;
} }
...@@ -17372,6 +17376,7 @@ ma_result ma_find_AudioObjectID(ma_context* pContext, ma_device_type deviceType, ...@@ -17372,6 +17376,7 @@ ma_result ma_find_AudioObjectID(ma_context* pContext, ma_device_type deviceType,
if (ma_does_AudioObject_support_playback(pContext, deviceObjectID)) { if (ma_does_AudioObject_support_playback(pContext, deviceObjectID)) {
if (strcmp(uid, pDeviceID->coreaudio) == 0) { if (strcmp(uid, pDeviceID->coreaudio) == 0) {
*pDeviceObjectID = deviceObjectID; *pDeviceObjectID = deviceObjectID;
ma_free(pDeviceObjectIDs);
return MA_SUCCESS; return MA_SUCCESS;
} }
} }
...@@ -17379,11 +17384,14 @@ ma_result ma_find_AudioObjectID(ma_context* pContext, ma_device_type deviceType, ...@@ -17379,11 +17384,14 @@ ma_result ma_find_AudioObjectID(ma_context* pContext, ma_device_type deviceType,
if (ma_does_AudioObject_support_capture(pContext, deviceObjectID)) { if (ma_does_AudioObject_support_capture(pContext, deviceObjectID)) {
if (strcmp(uid, pDeviceID->coreaudio) == 0) { if (strcmp(uid, pDeviceID->coreaudio) == 0) {
*pDeviceObjectID = deviceObjectID; *pDeviceObjectID = deviceObjectID;
ma_free(pDeviceObjectIDs);
return MA_SUCCESS; return MA_SUCCESS;
} }
} }
} }
} }
ma_free(pDeviceObjectIDs);
} }
/* If we get here it means we couldn't find the device. */ /* If we get here it means we couldn't find the device. */
...@@ -17464,6 +17472,7 @@ ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjectID dev ...@@ -17464,6 +17472,7 @@ ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjectID dev
} }
if (!hasSupportedFormat) { if (!hasSupportedFormat) {
ma_free(pDeviceFormatDescriptions);
return MA_FORMAT_NOT_SUPPORTED; return MA_FORMAT_NOT_SUPPORTED;
} }
...@@ -17585,6 +17594,8 @@ ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjectID dev ...@@ -17585,6 +17594,8 @@ ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjectID dev
} }
*pFormat = bestDeviceFormatSoFar; *pFormat = bestDeviceFormatSoFar;
ma_free(pDeviceFormatDescriptions);
return MA_SUCCESS; return MA_SUCCESS;
} }
#endif #endif
...@@ -18920,6 +18931,7 @@ ma_result ma_context_init__coreaudio(const ma_context_config* pConfig, ma_contex ...@@ -18920,6 +18931,7 @@ ma_result ma_context_init__coreaudio(const ma_context_config* pConfig, ma_contex
} }
pContext->coreaudio.CFStringGetCString = ma_dlsym(pContext, pContext->coreaudio.hCoreFoundation, "CFStringGetCString"); pContext->coreaudio.CFStringGetCString = ma_dlsym(pContext, pContext->coreaudio.hCoreFoundation, "CFStringGetCString");
pContext->coreaudio.CFRelease = ma_dlsym(pContext, pContext->coreaudio.hCoreFoundation, "CFRelease");
pContext->coreaudio.hCoreAudio = ma_dlopen(pContext, "CoreAudio.framework/CoreAudio"); pContext->coreaudio.hCoreAudio = ma_dlopen(pContext, "CoreAudio.framework/CoreAudio");
...@@ -18970,6 +18982,7 @@ ma_result ma_context_init__coreaudio(const ma_context_config* pConfig, ma_contex ...@@ -18970,6 +18982,7 @@ ma_result ma_context_init__coreaudio(const ma_context_config* pConfig, ma_contex
pContext->coreaudio.AudioUnitRender = ma_dlsym(pContext, pContext->coreaudio.hAudioUnit, "AudioUnitRender"); pContext->coreaudio.AudioUnitRender = ma_dlsym(pContext, pContext->coreaudio.hAudioUnit, "AudioUnitRender");
#else #else
pContext->coreaudio.CFStringGetCString = (ma_proc)CFStringGetCString; pContext->coreaudio.CFStringGetCString = (ma_proc)CFStringGetCString;
pContext->coreaudio.CFRelease = (ma_proc)CFRelease;
#if defined(MA_APPLE_DESKTOP) #if defined(MA_APPLE_DESKTOP)
pContext->coreaudio.AudioObjectGetPropertyData = (ma_proc)AudioObjectGetPropertyData; pContext->coreaudio.AudioObjectGetPropertyData = (ma_proc)AudioObjectGetPropertyData;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment