Rémi Bernon (@rbernon) commented about dlls/winex11.drv/keyboard.c:
+ for (i = 0; i < ARRAY_SIZE(xkb_desc->names->groups); i++) + { + if (!xkb_desc->names->groups[i]) + break; + } + xkb_group_count = i; + if (!XGetAtomNames( display, xkb_desc->names->groups, xkb_group_count, xkb_group_names )) + xkb_group_count = 0; + for (i = 0; i < xkb_group_count; i++) + { + TRACE("group %u name %s\n", i, debugstr_a(xkb_group_names[i])); + XFree( xkb_group_names[i] ); + } + XkbFreeNames( xkb_desc, XkbGroupNamesMask, True ); + XkbFreeClientMap( xkb_desc, 0, True ); + XkbFreeKeyboard( xkb_desc, XkbNamesMask, True ); IIUC from XkbFreeKeyboard documentation, with free_all = True everything gets freed, so there's no need to have separate calls.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10550#note_136452