diff --git a/xkb/xkb.c b/xkb/xkb.c index 62dee9cb6d1d4b3b6108d9df94728762e90f1cd5..bfc21de00492c32326a04477eebf163ff2940b4f 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -2511,15 +2511,14 @@ _XkbSetMapChecks(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq * req, } } - if ((req->present & XkbKeyTypesMask) && - (!CheckKeyTypes(client, xkb, req, (xkbKeyTypeWireDesc **) &values, - &nTypes, mapWidths, doswap))) { - client->errorValue = nTypes; - return BadValue; - } - else { + if (!(req->present & XkbKeyTypesMask)) { nTypes = xkb->map->num_types; } + else if (!CheckKeyTypes(client, xkb, req, (xkbKeyTypeWireDesc **) &values, + &nTypes, mapWidths, doswap)) { + client->errorValue = nTypes; + return BadValue; + } /* symsPerKey/mapWidths must be filled regardless of client-side flags */ map = &xkb->map->key_sym_map[xkb->min_key_code];