Thu Jul 23 17:43:41 2015 UTC ()
Apply patch (requested by mrg in ticket #885):
Bring in the upstream fix (1e362fac92c6688fb42b195ccad16d7a337a34c1)
that was attempted locally in revision 1.2: Ensure we allocate at least
XkbNumRequiredTypes in map.


(snj)
diff -r1.2 -r1.2.2.1 xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c

cvs diff -r1.2 -r1.2.2.1 xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c (expand / switch to unified diff)

--- xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c 2014/07/13 16:37:45 1.2
+++ xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c 2015/07/23 17:43:41 1.2.2.1
@@ -292,27 +292,27 @@ XkbAddKeyType(XkbDescPtr xkb, @@ -292,27 +292,27 @@ XkbAddKeyType(XkbDescPtr xkb,
292 if ((!xkb) || (num_lvls < 1)) 292 if ((!xkb) || (num_lvls < 1))
293 return NULL; 293 return NULL;
294 map = xkb->map; 294 map = xkb->map;
295 if ((map) && (map->types)) { 295 if ((map) && (map->types)) {
296 for (i = 0; i < map->num_types; i++) { 296 for (i = 0; i < map->num_types; i++) {
297 if (map->types[i].name == name) { 297 if (map->types[i].name == name) {
298 Status status = 298 Status status =
299 XkbResizeKeyType(xkb, i, map_count, want_preserve, 299 XkbResizeKeyType(xkb, i, map_count, want_preserve,
300 num_lvls); 300 num_lvls);
301 return (status == Success ? &map->types[i] : NULL); 301 return (status == Success ? &map->types[i] : NULL);
302 } 302 }
303 } 303 }
304 } 304 }
305 if ((!map) || (!map->types) || !(map->num_types < XkbNumRequiredTypes)) { 305 if ((!map) || (!map->types) || (map->num_types < XkbNumRequiredTypes)) {
306 tmp = XkbNumRequiredTypes + 1; 306 tmp = XkbNumRequiredTypes + 1;
307 if (XkbAllocClientMap(xkb, XkbKeyTypesMask, tmp) != Success) 307 if (XkbAllocClientMap(xkb, XkbKeyTypesMask, tmp) != Success)
308 return NULL; 308 return NULL;
309 if (!map) 309 if (!map)
310 map = xkb->map; 310 map = xkb->map;
311 tmp = 0; 311 tmp = 0;
312 if (map->num_types <= XkbKeypadIndex) 312 if (map->num_types <= XkbKeypadIndex)
313 tmp |= XkbKeypadMask; 313 tmp |= XkbKeypadMask;
314 if (map->num_types <= XkbAlphabeticIndex) 314 if (map->num_types <= XkbAlphabeticIndex)
315 tmp |= XkbAlphabeticMask; 315 tmp |= XkbAlphabeticMask;
316 if (map->num_types <= XkbTwoLevelIndex) 316 if (map->num_types <= XkbTwoLevelIndex)
317 tmp |= XkbTwoLevelMask; 317 tmp |= XkbTwoLevelMask;
318 if (map->num_types <= XkbOneLevelIndex) 318 if (map->num_types <= XkbOneLevelIndex)