mirror of
				https://github.com/glfw/glfw.git
				synced 2025-11-04 06:15:07 +00:00 
			
		
		
		
	Linux: Fix memory leak when inotify init failed
This introduces regex_compiled boolean to track whether the regex is compiled successfully. Closes #2229
This commit is contained in:
		
							parent
							
								
									0bd3e879e1
								
							
						
					
					
						commit
						c992226a9c
					
				@ -326,7 +326,9 @@ GLFWbool _glfwInitJoysticksLinux(void)
 | 
			
		||||
 | 
			
		||||
    // Continue without device connection notifications if inotify fails
 | 
			
		||||
 | 
			
		||||
    if (regcomp(&_glfw.linjs.regex, "^event[0-9]\\+$", 0) != 0)
 | 
			
		||||
    _glfw.linjs.regex_compiled = regcomp(&_glfw.linjs.regex,
 | 
			
		||||
                                         "^event[0-9]\\+$", 0) == 0;
 | 
			
		||||
    if (!_glfw.linjs.regex_compiled)
 | 
			
		||||
    {
 | 
			
		||||
        _glfwInputError(GLFW_PLATFORM_ERROR, "Linux: Failed to compile regex");
 | 
			
		||||
        return GLFW_FALSE;
 | 
			
		||||
@ -378,8 +380,10 @@ void _glfwTerminateJoysticksLinux(void)
 | 
			
		||||
            inotify_rm_watch(_glfw.linjs.inotify, _glfw.linjs.watch);
 | 
			
		||||
 | 
			
		||||
        close(_glfw.linjs.inotify);
 | 
			
		||||
        regfree(&_glfw.linjs.regex);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (_glfw.linjs.regex_compiled)
 | 
			
		||||
        regfree(&_glfw.linjs.regex);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode)
 | 
			
		||||
 | 
			
		||||
@ -50,6 +50,7 @@ typedef struct _GLFWlibraryLinux
 | 
			
		||||
    int                     inotify;
 | 
			
		||||
    int                     watch;
 | 
			
		||||
    regex_t                 regex;
 | 
			
		||||
    GLFWbool                regex_compiled;
 | 
			
		||||
    GLFWbool                dropped;
 | 
			
		||||
} _GLFWlibraryLinux;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user