Fix invalid read from poor setlocale usage.
diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c
index 724b5fb..e658ac0 100644
--- a/src/video/x11/SDL_x11video.c
+++ b/src/video/x11/SDL_x11video.c
@@ -399,6 +399,10 @@
const char *env_xmods = SDL_getenv("XMODIFIERS");
SDL_bool has_dbus_ime_support = SDL_FALSE;
+ if (prev_locale) {
+ prev_locale = SDL_strdup(prev_locale);
+ }
+
if (prev_xmods) {
prev_xmods = SDL_strdup(prev_xmods);
}
@@ -431,6 +435,10 @@
setlocale(LC_ALL, prev_locale);
X11_XSetLocaleModifiers(prev_xmods);
+ if (prev_locale) {
+ SDL_free(prev_locale);
+ }
+
if (prev_xmods) {
SDL_free(prev_xmods);
}