From 35b83ee3932f53e24d75d0c2a93a3277a0c80fdd 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. --- src/cocoa_joystick.m | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cocoa_joystick.m b/src/cocoa_joystick.m index 1e1576378..dc798b8be 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));