mirror of
				https://github.com/glfw/glfw.git
				synced 2025-11-04 14:16:42 +00:00 
			
		
		
		
	Fixed Win32 joystick name memory leak.
This commit is contained in:
		
							parent
							
								
									b72a97d531
								
							
						
					
					
						commit
						d1132cb3d1
					
				@ -192,6 +192,8 @@ int _glfwPlatformInit(void)
 | 
			
		||||
 | 
			
		||||
    _glfwInitTimer();
 | 
			
		||||
 | 
			
		||||
    _glfwInitJoysticks();
 | 
			
		||||
 | 
			
		||||
    return GL_TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -212,7 +214,7 @@ void _glfwPlatformTerminate(void)
 | 
			
		||||
        _glfw.win32.classAtom = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // TODO: Remove keyboard hook
 | 
			
		||||
    _glfwTerminateJoysticks();
 | 
			
		||||
 | 
			
		||||
    freeLibraries();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -71,6 +71,32 @@ static float calcJoystickPos(DWORD pos, DWORD min, DWORD max)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////                       GLFW internal API                      //////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
//========================================================================
 | 
			
		||||
// Initialize joystick interface
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
void _glfwInitJoysticks(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//========================================================================
 | 
			
		||||
// Close all opened joystick handles
 | 
			
		||||
//========================================================================
 | 
			
		||||
 | 
			
		||||
void _glfwTerminateJoysticks(void)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0;  i < GLFW_JOYSTICK_LAST;  i++)
 | 
			
		||||
        free(_glfw.win32.joystick[i].name);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////                       GLFW platform API                      //////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////
 | 
			
		||||
@ -235,9 +261,9 @@ const char* _glfwPlatformGetJoystickName(int joy)
 | 
			
		||||
 | 
			
		||||
    _glfw_joyGetDevCaps(i, &jc, sizeof(JOYCAPS));
 | 
			
		||||
 | 
			
		||||
    free(_glfw.win32.joyNames[i]);
 | 
			
		||||
    _glfw.win32.joyNames[i] = _glfwCreateUTF8FromWideString(jc.szPname);
 | 
			
		||||
    free(_glfw.win32.joystick[i].name);
 | 
			
		||||
    _glfw.win32.joystick[i].name = _glfwCreateUTF8FromWideString(jc.szPname);
 | 
			
		||||
 | 
			
		||||
    return _glfw.win32.joyNames[i];
 | 
			
		||||
    return _glfw.win32.joystick[i].name;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -189,7 +189,9 @@ typedef struct _GLFWlibraryWin32
 | 
			
		||||
    } winmm;
 | 
			
		||||
#endif // _GLFW_NO_DLOAD_WINMM
 | 
			
		||||
 | 
			
		||||
    char*                     joyNames[GLFW_JOYSTICK_LAST + 1];
 | 
			
		||||
    struct {
 | 
			
		||||
        char*           name;
 | 
			
		||||
    } joystick[GLFW_JOYSTICK_LAST + 1];
 | 
			
		||||
 | 
			
		||||
} _GLFWlibraryWin32;
 | 
			
		||||
 | 
			
		||||
@ -215,6 +217,10 @@ char* _glfwCreateUTF8FromWideString(const WCHAR* source);
 | 
			
		||||
// Time
 | 
			
		||||
void _glfwInitTimer(void);
 | 
			
		||||
 | 
			
		||||
// Joystick input
 | 
			
		||||
void _glfwInitJoysticks(void);
 | 
			
		||||
void _glfwTerminateJoysticks(void);
 | 
			
		||||
 | 
			
		||||
// OpenGL support
 | 
			
		||||
int _glfwCreateContext(_GLFWwindow* window,
 | 
			
		||||
                       const _GLFWwndconfig* wndconfig,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user