Compare commits

...

3 Commits

Author SHA1 Message Date
Yukari Hafner
19df4f02ca
Merge 15f9e1bea7 into ac10768495 2025-07-18 13:12:26 +02:00
Camilla Löwy
ac10768495 Wayland: Fix memory leaks in data offer reading
The buffer storing the contents of the data offer being read could leak
if buffer reallocation or reading from the pipe failed.
2025-07-18 12:31:07 +02:00
Yukari Hafner
15f9e1bea7
Check whether locales are the empty string and ignore them if they are.
This fixes a confusing error in compiling the xkb compose table if
LC_ALL, LC_CTYPE, or LANG are set to the empty string.
2025-06-20 22:05:11 +02:00
2 changed files with 6 additions and 3 deletions

View File

@ -133,6 +133,7 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727) - [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
- [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741,#2727) - [Wayland] Bugfix: Reset key repeat timer when window destroyed (#2741,#2727)
- [Wayland] Bugfix: Memory would leak if reading a data offer failed midway
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`

View File

@ -1333,6 +1333,7 @@ static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mime
if (!longer) if (!longer)
{ {
_glfwInputError(GLFW_OUT_OF_MEMORY, NULL); _glfwInputError(GLFW_OUT_OF_MEMORY, NULL);
_glfw_free(string);
close(fds[0]); close(fds[0]);
return NULL; return NULL;
} }
@ -1352,6 +1353,7 @@ static char* readDataOfferAsString(struct wl_data_offer* offer, const char* mime
_glfwInputError(GLFW_PLATFORM_ERROR, _glfwInputError(GLFW_PLATFORM_ERROR,
"Wayland: Failed to read from data offer pipe: %s", "Wayland: Failed to read from data offer pipe: %s",
strerror(errno)); strerror(errno));
_glfw_free(string);
close(fds[0]); close(fds[0]);
return NULL; return NULL;
} }
@ -1686,11 +1688,11 @@ static void keyboardHandleKeymap(void* userData,
// Look up the preferred locale, falling back to "C" as default. // Look up the preferred locale, falling back to "C" as default.
locale = getenv("LC_ALL"); locale = getenv("LC_ALL");
if (!locale) if (!locale || strlen(locale) == 0)
locale = getenv("LC_CTYPE"); locale = getenv("LC_CTYPE");
if (!locale) if (!locale || strlen(locale) == 0)
locale = getenv("LANG"); locale = getenv("LANG");
if (!locale) if (!locale || strlen(locale) == 0)
locale = "C"; locale = "C";
composeTable = composeTable =