From: Alexandros Frantzis alexandros.frantzis@collabora.com
The functions xkb_keymap_layout_get_name() and rxkb_layout_get_description() can return NULL if the corresponding information is missing.
Co-authored-by: lompik lompikvoila@gmail.com Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58585 --- dlls/winewayland.drv/wayland_keyboard.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/winewayland.drv/wayland_keyboard.c b/dlls/winewayland.drv/wayland_keyboard.c index 39b42231b00..648b7f9cc2f 100644 --- a/dlls/winewayland.drv/wayland_keyboard.c +++ b/dlls/winewayland.drv/wayland_keyboard.c @@ -606,7 +606,8 @@ static BOOL find_xkb_layout_variant(const char *name, const char **layout, const
for (iter = rxkb_layout_first(rxkb_context); iter; iter = rxkb_layout_next(iter)) { - if (!strcmp(name, rxkb_layout_get_description(iter))) + const char *desc = rxkb_layout_get_description(iter); + if (desc && !strcmp(name, desc)) { *layout = rxkb_layout_get_name(iter); *variant = rxkb_layout_get_variant(iter); @@ -710,7 +711,7 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *wl_keyboard, char buffer[1024]; LANGID lang;
- if (!find_xkb_layout_variant(layout_name, &layout, &variant)) layout = "us"; + if (!layout_name || !find_xkb_layout_variant(layout_name, &layout, &variant)) layout = "us"; if (variant) variant_len = strlen(variant); layout_len = strlen(layout);