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
|
// 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");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Linux: Failed to compile regex");
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
@ -378,8 +380,10 @@ void _glfwTerminateJoysticksLinux(void)
|
|||||||
inotify_rm_watch(_glfw.linjs.inotify, _glfw.linjs.watch);
|
inotify_rm_watch(_glfw.linjs.inotify, _glfw.linjs.watch);
|
||||||
|
|
||||||
close(_glfw.linjs.inotify);
|
close(_glfw.linjs.inotify);
|
||||||
regfree(&_glfw.linjs.regex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_glfw.linjs.regex_compiled)
|
||||||
|
regfree(&_glfw.linjs.regex);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode)
|
GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode)
|
||||||
|
@ -50,6 +50,7 @@ typedef struct _GLFWlibraryLinux
|
|||||||
int inotify;
|
int inotify;
|
||||||
int watch;
|
int watch;
|
||||||
regex_t regex;
|
regex_t regex;
|
||||||
|
GLFWbool regex_compiled;
|
||||||
GLFWbool dropped;
|
GLFWbool dropped;
|
||||||
} _GLFWlibraryLinux;
|
} _GLFWlibraryLinux;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user