From b4c03b992cb6ccd2380b726dcc0e7dfb145bdb64 Mon Sep 17 00:00:00 2001 From: Shane Liesegang Date: Thu, 6 Feb 2014 09:37:37 -0800 Subject: [PATCH] Fixing memory leak in cocoa_joystick Making sure that propsRef and valueRef get released no matter when we break out of the loop. Resolves #231. --- src/cocoa_joystick.m | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cocoa_joystick.m b/src/cocoa_joystick.m index 1e157637..dc798b8b 100644 --- a/src/cocoa_joystick.m +++ b/src/cocoa_joystick.m @@ -343,6 +343,7 @@ void _glfwInitJoysticks(void) { // This device is not relevant to GLFW CFRelease(valueRef); + CFRelease(propsRef); continue; } @@ -360,6 +361,7 @@ void _glfwInitJoysticks(void) { // This device is not relevant to GLFW CFRelease(valueRef); + CFRelease(propsRef); continue; } @@ -376,7 +378,11 @@ void _glfwInitJoysticks(void) &score); if (kIOReturnSuccess != result) + { + CFRelease(valueRef); + CFRelease(propsRef); return; + } plugInResult = (*ppPlugInInterface)->QueryInterface( ppPlugInInterface, @@ -384,7 +390,11 @@ void _glfwInitJoysticks(void) (void *) &(joystick->interface)); if (plugInResult != S_OK) + { + CFRelease(valueRef); + CFRelease(propsRef); return; + } (*ppPlugInInterface)->Release(ppPlugInInterface); @@ -419,6 +429,7 @@ void _glfwInitJoysticks(void) (void*) joystick); CFRelease(valueRef); } + CFRelease(propsRef); joystick->axes = calloc(CFArrayGetCount(joystick->axisElements), sizeof(float));