diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-12-18 09:17:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-18 09:17:39 -0500 |
commit | c91523c57888c257fa650ffa2574c470f7a788fe (patch) | |
tree | fe7204f84390b3189064cb5bf8672eade603a57f /rootston/keyboard.c | |
parent | 3d07d260cb45b79d3612a36766c870fdd1606f0b (diff) | |
parent | 2c31cac11623207a02c33734bc77d4ee3b286e8a (diff) |
Merge pull request #499 from emersion/unknown-keymap
Do not segfault when loading an unknown keymap
Diffstat (limited to 'rootston/keyboard.c')
-rw-r--r-- | rootston/keyboard.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/rootston/keyboard.c b/rootston/keyboard.c index 4aaf2d48..758a49fb 100644 --- a/rootston/keyboard.c +++ b/rootston/keyboard.c @@ -354,8 +354,16 @@ struct roots_keyboard *roots_keyboard_create(struct wlr_input_device *device, wlr_log(L_ERROR, "Cannot create XKB context"); return NULL; } - wlr_keyboard_set_keymap(device->keyboard, xkb_map_new_from_names(context, - &rules, XKB_KEYMAP_COMPILE_NO_FLAGS)); + + struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules, + XKB_KEYMAP_COMPILE_NO_FLAGS); + if (keymap == NULL) { + xkb_context_unref(context); + wlr_log(L_ERROR, "Cannot create XKB keymap"); + return NULL; + } + + wlr_keyboard_set_keymap(device->keyboard, keymap); xkb_context_unref(context); int repeat_rate = (config->repeat_rate > 0) ? config->repeat_rate : 25; |