diff --git a/xkb/xkb.c b/xkb/xkb.c index f3cc05c4e..80e63e290 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -3004,7 +3004,7 @@ _XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev, return BadAlloc; } } - else if (req->truncateSI) { + else if (req->truncateSI || req->firstSI + req->nSI > compat->num_si) { compat->num_si = req->firstSI + req->nSI; } sym = &compat->sym_interpret[req->firstSI];