Module Name:    xsrc
Committed By:   mrg
Date:           Mon Jul  8 22:59:17 UTC 2019

Modified Files:
        xsrc/external/mit/libX11/dist/nls/en_US.UTF-8: Compose.pre
        xsrc/external/mit/libX11/dist/src: Font.c FontNames.c GetFPath.c
            ListExt.c ModMap.c XlibInt.c
        xsrc/external/mit/libX11/dist/src/xkb: XKBMAlloc.c
        xsrc/external/mit/libX11/dist/src/xlibi18n: XlcDL.c
        xsrc/external/mit/libXi/dist/src: XIPassiveGrab.c
Removed Files:
        xsrc/external/mit/libX11/dist: README
        xsrc/external/mit/libX11/dist/man/xkb: XkbAllocGeomOverlayKey.man
        xsrc/external/mit/libXi/dist: README

Log Message:
merge libX11 1.6.8 and libXi 1.7.10.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.3 -r0 xsrc/external/mit/libX11/dist/README
cvs rdiff -u -r1.1.1.3 -r0 \
    xsrc/external/mit/libX11/dist/man/xkb/XkbAllocGeomOverlayKey.man
cvs rdiff -u -r1.4 -r1.5 \
    xsrc/external/mit/libX11/dist/nls/en_US.UTF-8/Compose.pre
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/libX11/dist/src/Font.c
cvs rdiff -u -r1.7 -r1.8 xsrc/external/mit/libX11/dist/src/FontNames.c \
    xsrc/external/mit/libX11/dist/src/ModMap.c
cvs rdiff -u -r1.6 -r1.7 xsrc/external/mit/libX11/dist/src/GetFPath.c \
    xsrc/external/mit/libX11/dist/src/ListExt.c
cvs rdiff -u -r1.10 -r1.11 xsrc/external/mit/libX11/dist/src/XlibInt.c
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c
cvs rdiff -u -r1.8 -r1.9 xsrc/external/mit/libX11/dist/src/xlibi18n/XlcDL.c
cvs rdiff -u -r1.1.1.2 -r0 xsrc/external/mit/libXi/dist/README
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/libXi/dist/src/XIPassiveGrab.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/libX11/dist/nls/en_US.UTF-8/Compose.pre
diff -u xsrc/external/mit/libX11/dist/nls/en_US.UTF-8/Compose.pre:1.4 xsrc/external/mit/libX11/dist/nls/en_US.UTF-8/Compose.pre:1.5
--- xsrc/external/mit/libX11/dist/nls/en_US.UTF-8/Compose.pre:1.4	Tue Oct  4 22:04:39 2016
+++ xsrc/external/mit/libX11/dist/nls/en_US.UTF-8/Compose.pre	Mon Jul  8 22:59:16 2019
@@ -190,6 +190,14 @@ XCOMM "₪" U20aa NEW SHEQEL SIGN
 <Multi_key> <equal> <Cyrillic_ES>	: "€"   EuroSign # EURO SIGN
 <Multi_key> <Cyrillic_IE> <equal>	: "€"   EuroSign # EURO SIGN
 <Multi_key> <equal> <Cyrillic_IE>	: "€"   EuroSign # EURO SIGN
+<Multi_key> <P> <equal>          	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <p> <equal>          	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <equal> <P>          	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <equal> <p>          	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <Cyrillic_ZE> <equal>	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <Cyrillic_ze> <equal>	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <equal> <Cyrillic_ZE>	: "₽"   U20bd # ROUBLE SIGN
+<Multi_key> <equal> <Cyrillic_ze>	: "₽"   U20bd # ROUBLE SIGN
 XCOMM "₭" U20ad KIP SIGN
 XCOMM "₮" U20ae TUGRIK SIGN
 XCOMM "₯" U20af DRACHMA SIGN

Index: xsrc/external/mit/libX11/dist/src/Font.c
diff -u xsrc/external/mit/libX11/dist/src/Font.c:1.5 xsrc/external/mit/libX11/dist/src/Font.c:1.6
--- xsrc/external/mit/libX11/dist/src/Font.c:1.5	Tue Oct  4 22:04:39 2016
+++ xsrc/external/mit/libX11/dist/src/Font.c	Mon Jul  8 22:59:16 2019
@@ -31,6 +31,7 @@ authorization from the X Consortium and 
 #include <config.h>
 #endif
 #include "Xlibint.h"
+#include "reallocarray.h"
 #include <limits.h>
 
 #if defined(XF86BIGFONT)
@@ -245,8 +246,8 @@ _XQueryFont (
 	    /* nFontProps is a CARD16 */
 	    nbytes = reply.nFontProps * SIZEOF(xFontProp);
 	    if ((nbytes >> 2) <= reply_left) {
-		size_t pbytes = reply.nFontProps * sizeof(XFontProp);
-		fs->properties = Xmalloc (pbytes);
+		fs->properties = Xmallocarray (reply.nFontProps,
+                                               sizeof(XFontProp));
 	    }
 	    if (! fs->properties) {
 		Xfree(fs);
@@ -266,8 +267,8 @@ _XQueryFont (
 	if (reply.nCharInfos < (INT_MAX / sizeof(XCharStruct))) {
 	    nbytes = reply.nCharInfos * SIZEOF(xCharInfo);
 	    if ((nbytes >> 2) <= reply_left) {
-		size_t cibytes = reply.nCharInfos * sizeof(XCharStruct);
-		fs->per_char = Xmalloc (cibytes);
+		fs->per_char = Xmallocarray (reply.nCharInfos,
+                                             sizeof(XCharStruct));
 	    }
 	}
 	if (! fs->per_char) {
@@ -489,8 +490,8 @@ _XF86BigfontQueryFont (
 	/* nFontProps is a CARD16 */
 	nbytes = reply.nFontProps * SIZEOF(xFontProp);
 	if ((nbytes >> 2) <= reply_left) {
-	    size_t pbytes = reply.nFontProps * sizeof(XFontProp);
-	    fs->properties = Xmalloc (pbytes);
+	    fs->properties = Xmallocarray (reply.nFontProps,
+                                           sizeof(XFontProp));
 	}
 	if (! fs->properties) {
 	    Xfree(fs);
@@ -529,7 +530,8 @@ _XF86BigfontQueryFont (
 		_XEatDataWords(dpy, reply_left);
 		return (XFontStruct *)NULL;
 	    }
-	    if (! (fs->per_char = Xmalloc (reply.nCharInfos * sizeof(XCharStruct)))) {
+	    if (! (fs->per_char = Xmallocarray (reply.nCharInfos,
+                                                sizeof(XCharStruct)))) {
 		Xfree(pUniqCI);
 		Xfree(fs->properties);
 		Xfree(fs);

Index: xsrc/external/mit/libX11/dist/src/FontNames.c
diff -u xsrc/external/mit/libX11/dist/src/FontNames.c:1.7 xsrc/external/mit/libX11/dist/src/FontNames.c:1.8
--- xsrc/external/mit/libX11/dist/src/FontNames.c:1.7	Tue Aug 28 05:52:12 2018
+++ xsrc/external/mit/libX11/dist/src/FontNames.c	Mon Jul  8 22:59:16 2019
@@ -29,6 +29,7 @@ in this Software without prior written a
 #include <config.h>
 #endif
 #include "Xlibint.h"
+#include "reallocarray.h"
 #include <limits.h>
 
 char **
@@ -66,7 +67,7 @@ int *actualCount)	/* RETURN */
     }
 
     if (rep.nFonts) {
-	flist = Xmalloc (rep.nFonts * sizeof(char *));
+	flist = Xmallocarray (rep.nFonts, sizeof(char *));
 	if (rep.length > 0 && rep.length < (INT_MAX >> 2)) {
 	    rlen = rep.length << 2;
 	    ch = Xmalloc(rlen + 1);
Index: xsrc/external/mit/libX11/dist/src/ModMap.c
diff -u xsrc/external/mit/libX11/dist/src/ModMap.c:1.7 xsrc/external/mit/libX11/dist/src/ModMap.c:1.8
--- xsrc/external/mit/libX11/dist/src/ModMap.c:1.7	Tue Aug 28 05:52:12 2018
+++ xsrc/external/mit/libX11/dist/src/ModMap.c	Mon Jul  8 22:59:16 2019
@@ -28,6 +28,7 @@ in this Software without prior written a
 #include <config.h>
 #endif
 #include "Xlibint.h"
+#include "reallocarray.h"
 #include <limits.h>
 
 XModifierKeymap *
@@ -100,7 +101,7 @@ XNewModifiermap(int keyspermodifier)
     if (res) {
 	res->max_keypermod = keyspermodifier;
 	res->modifiermap = (keyspermodifier > 0 ?
-			    Xmalloc(8 * keyspermodifier)
+			    Xmallocarray(keyspermodifier, 8)
 			    : (KeyCode *) NULL);
 	if (keyspermodifier && (res->modifiermap == NULL)) {
 	    Xfree(res);

Index: xsrc/external/mit/libX11/dist/src/GetFPath.c
diff -u xsrc/external/mit/libX11/dist/src/GetFPath.c:1.6 xsrc/external/mit/libX11/dist/src/GetFPath.c:1.7
--- xsrc/external/mit/libX11/dist/src/GetFPath.c:1.6	Tue Aug 28 05:52:12 2018
+++ xsrc/external/mit/libX11/dist/src/GetFPath.c	Mon Jul  8 22:59:16 2019
@@ -28,6 +28,7 @@ in this Software without prior written a
 #include <config.h>
 #endif
 #include "Xlibint.h"
+#include "reallocarray.h"
 #include <limits.h>
 
 char **XGetFontPath(
@@ -49,7 +50,7 @@ char **XGetFontPath(
 	(void) _XReply (dpy, (xReply *) &rep, 0, xFalse);
 
 	if (rep.nPaths) {
-	    flist = Xmalloc(rep.nPaths * sizeof (char *));
+	    flist = Xmallocarray(rep.nPaths, sizeof (char *));
 	    if (rep.length < (INT_MAX >> 2)) {
 		nbytes = (unsigned long) rep.length << 2;
 		ch = Xmalloc (nbytes + 1);
Index: xsrc/external/mit/libX11/dist/src/ListExt.c
diff -u xsrc/external/mit/libX11/dist/src/ListExt.c:1.6 xsrc/external/mit/libX11/dist/src/ListExt.c:1.7
--- xsrc/external/mit/libX11/dist/src/ListExt.c:1.6	Tue Aug 28 05:52:12 2018
+++ xsrc/external/mit/libX11/dist/src/ListExt.c	Mon Jul  8 22:59:16 2019
@@ -28,6 +28,7 @@ in this Software without prior written a
 #include <config.h>
 #endif
 #include "Xlibint.h"
+#include "reallocarray.h"
 #include <limits.h>
 
 char **XListExtensions(
@@ -54,7 +55,7 @@ char **XListExtensions(
 	}
 
 	if (rep.nExtensions) {
-	    list = Xmalloc (rep.nExtensions * sizeof (char *));
+	    list = Xmallocarray (rep.nExtensions, sizeof (char *));
 	    if (rep.length > 0 && rep.length < (INT_MAX >> 2)) {
 		rlen = rep.length << 2;
 		ch = Xmalloc (rlen + 1);

Index: xsrc/external/mit/libX11/dist/src/XlibInt.c
diff -u xsrc/external/mit/libX11/dist/src/XlibInt.c:1.10 xsrc/external/mit/libX11/dist/src/XlibInt.c:1.11
--- xsrc/external/mit/libX11/dist/src/XlibInt.c:1.10	Tue Aug 28 05:52:12 2018
+++ xsrc/external/mit/libX11/dist/src/XlibInt.c	Mon Jul  8 22:59:16 2019
@@ -39,6 +39,7 @@ from The Open Group.
 #endif
 #include "Xlibint.h"
 #include "Xprivate.h"
+#include "reallocarray.h"
 #include <X11/Xpoll.h>
 #include <assert.h>
 #include <stdio.h>
@@ -46,9 +47,28 @@ from The Open Group.
 #include <direct.h>
 #endif
 
+/* Needed for FIONREAD on Solaris */
+#ifdef HAVE_SYS_FILIO_H
+#include <sys/filio.h>
+#endif
+
+/* Needed for FIONREAD on Cygwin */
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+/* Needed for ioctl() on Solaris */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #ifdef XTHREADS
 #include "locking.h"
 
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+
 /* these pointers get initialized by XInitThreads */
 LockInfoPtr _Xglobal_lock = NULL;
 void (*_XCreateMutex_fn)(LockInfoPtr) = NULL;
@@ -349,7 +369,7 @@ _XRegisterInternalConnection(
     new_conni = Xmalloc(sizeof(struct _XConnectionInfo));
     if (!new_conni)
 	return 0;
-    new_conni->watch_data = Xmalloc(dpy->watcher_count * sizeof(XPointer));
+    new_conni->watch_data = Xmallocarray(dpy->watcher_count, sizeof(XPointer));
     if (!new_conni->watch_data) {
 	Xfree(new_conni);
 	return 0;
@@ -435,7 +455,7 @@ XInternalConnectionNumbers(
     count = 0;
     for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next)
 	count++;
-    fd_list = Xmalloc (count * sizeof(int));
+    fd_list = Xmallocarray (count, sizeof(int));
     if (!fd_list) {
 	UnlockDisplay(dpy);
 	return 0;
@@ -508,8 +528,8 @@ XAddConnectionWatch(
 
     /* allocate new watch data */
     for (info_list=dpy->im_fd_info; info_list; info_list=info_list->next) {
-	wd_array = Xrealloc(info_list->watch_data,
-			    (dpy->watcher_count + 1) * sizeof(XPointer));
+	wd_array = Xreallocarray(info_list->watch_data,
+                                 dpy->watcher_count + 1, sizeof(XPointer));
 	if (!wd_array) {
 	    UnlockDisplay(dpy);
 	    return 0;
@@ -1233,6 +1253,21 @@ _XWireToEvent(
 	return(True);
 }
 
+static int
+SocketBytesReadable(Display *dpy)
+{
+    int bytes = 0, last_error;
+#ifdef WIN32
+    last_error = WSAGetLastError();
+    ioctlsocket(ConnectionNumber(dpy), FIONREAD, &bytes);
+    WSASetLastError(last_error);
+#else
+    last_error = errno;
+    ioctl(ConnectionNumber(dpy), FIONREAD, &bytes);
+    errno = last_error;
+#endif
+    return bytes;
+}
 
 /*
  * _XDefaultIOError - Default fatal system error reporting routine.  Called
@@ -1241,25 +1276,35 @@ _XWireToEvent(
 _X_NORETURN int _XDefaultIOError(
 	Display *dpy)
 {
-	if (ECHECK(EPIPE)) {
-	    (void) fprintf (stderr,
-	"X connection to %s broken (explicit kill or server shutdown).\r\n",
-			    DisplayString (dpy));
+	int killed = ECHECK(EPIPE);
+
+	/*
+	 * If the socket was closed on the far end, the final recvmsg in
+	 * xcb will have thrown EAGAIN because we're non-blocking. Detect
+	 * this to get the more informative error message.
+	 */
+	if (ECHECK(EAGAIN) && SocketBytesReadable(dpy) <= 0)
+	    killed = True;
+
+	if (killed) {
+	    fprintf (stderr,
+                     "X connection to %s broken (explicit kill or server shutdown).\r\n",
+                     DisplayString (dpy));
 	} else {
-	    (void) fprintf (stderr,
-			"XIO:  fatal IO error %d (%s) on X server \"%s\"\r\n",
+            fprintf (stderr,
+                     "XIO:  fatal IO error %d (%s) on X server \"%s\"\r\n",
 #ifdef WIN32
-			WSAGetLastError(), strerror(WSAGetLastError()),
+                      WSAGetLastError(), strerror(WSAGetLastError()),
 #else
-			errno, strerror (errno),
+                      errno, strerror (errno),
 #endif
-			DisplayString (dpy));
-	    (void) fprintf (stderr,
-	 "      after %lu requests (%lu known processed) with %d events remaining.\r\n",
-			NextRequest(dpy) - 1, LastKnownRequestProcessed(dpy),
-			QLength(dpy));
+                      DisplayString (dpy));
+	    fprintf (stderr,
+		     "      after %lu requests (%lu known processed) with %d events remaining.\r\n",
+		     NextRequest(dpy) - 1, LastKnownRequestProcessed(dpy),
+		     QLength(dpy));
+        }
 
-	}
 	exit(1);
 	/*NOTREACHED*/
 }

Index: xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c
diff -u xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c:1.3 xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c:1.4
--- xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c:1.3	Sun Jul 19 08:13:11 2015
+++ xsrc/external/mit/libX11/dist/src/xkb/XKBMAlloc.c	Mon Jul  8 22:59:16 2019
@@ -69,25 +69,17 @@ XkbAllocClientMap(XkbDescPtr xkb, unsign
 
     if ((which & XkbKeyTypesMask) && (nTotalTypes > 0)) {
         if (map->types == NULL) {
-            map->types = _XkbTypedCalloc(nTotalTypes, XkbKeyTypeRec);
-            if (map->types == NULL)
-                return BadAlloc;
-            map->num_types = 0;
-            map->size_types = nTotalTypes;
+            map->num_types = map->size_types = 0;
         }
-        else if (map->size_types < nTotalTypes) {
-            XkbKeyTypeRec *prev_types = map->types;
+        if ((map->types == NULL) || (map->size_types < nTotalTypes)) {
+            _XkbResizeArray(map->types, map->size_types, nTotalTypes,
+                            XkbKeyTypeRec);
 
-            map->types =
-                _XkbTypedRealloc(map->types, nTotalTypes, XkbKeyTypeRec);
             if (map->types == NULL) {
-                _XkbFree(prev_types);
                 map->num_types = map->size_types = 0;
                 return BadAlloc;
             }
             map->size_types = nTotalTypes;
-            bzero(&map->types[map->num_types],
-                  ((map->size_types - map->num_types) * sizeof(XkbKeyTypeRec)));
         }
     }
     if (which & XkbKeySymsMask) {
@@ -164,26 +156,20 @@ XkbAllocServerMap(XkbDescPtr xkb, unsign
         if (nNewActions < 1)
             nNewActions = 1;
         if (map->acts == NULL) {
-            map->acts = _XkbTypedCalloc((nNewActions + 1), XkbAction);
-            if (map->acts == NULL)
-                return BadAlloc;
             map->num_acts = 1;
-            map->size_acts = nNewActions + 1;
+            map->size_acts = 0;
         }
-        else if ((map->size_acts - map->num_acts) < nNewActions) {
+        if ((map->acts == NULL) ||
+            ((map->size_acts - map->num_acts) < nNewActions)) {
             unsigned need;
-            XkbAction *prev_acts = map->acts;
 
             need = map->num_acts + nNewActions;
-            map->acts = _XkbTypedRealloc(map->acts, need, XkbAction);
+            _XkbResizeArray(map->acts, map->size_acts, need, XkbAction);
             if (map->acts == NULL) {
-                _XkbFree(prev_acts);
                 map->num_acts = map->size_acts = 0;
                 return BadAlloc;
             }
             map->size_acts = need;
-            bzero(&map->acts[map->num_acts],
-                  ((map->size_acts - map->num_acts) * sizeof(XkbAction)));
         }
         if (map->key_acts == NULL) {
             i = xkb->max_key_code + 1;
@@ -390,24 +376,18 @@ XkbResizeKeyType(XkbDescPtr xkb,
         type->map_count = 0;
     }
     else {
-        XkbKTMapEntryRec *prev_map = type->map;
-
         if ((map_count > type->map_count) || (type->map == NULL))
-            type->map =
-                _XkbTypedRealloc(type->map, map_count, XkbKTMapEntryRec);
+            _XkbResizeArray(type->map, type->map_count, map_count,
+                            XkbKTMapEntryRec);
         if (!type->map) {
-            _XkbFree(prev_map);
             return BadAlloc;
         }
         if (want_preserve) {
-            XkbModsRec *prev_preserve = type->preserve;
-
             if ((map_count > type->map_count) || (type->preserve == NULL)) {
-                type->preserve = _XkbTypedRealloc(type->preserve, map_count,
-                                                  XkbModsRec);
+                _XkbResizeArray(type->preserve, type->map_count, map_count,
+                                XkbModsRec);
             }
             if (!type->preserve) {
-                _XkbFree(prev_preserve);
                 return BadAlloc;
             }
         }
@@ -419,12 +399,8 @@ XkbResizeKeyType(XkbDescPtr xkb,
     }
 
     if ((new_num_lvls > type->num_levels) || (type->level_names == NULL)) {
-        Atom *prev_level_names = type->level_names;
-
-        type->level_names =
-            _XkbTypedRealloc(type->level_names, new_num_lvls, Atom);
+        _XkbResizeArray(type->level_names, type->num_levels, new_num_lvls, Atom);
         if (!type->level_names) {
-            _XkbFree(prev_level_names);
             return BadAlloc;
         }
     }
@@ -728,16 +704,11 @@ XkbChangeKeycodeRange(XkbDescPtr xkb,
         tmp = maxKC - xkb->max_key_code;
         if (xkb->map) {
             if (xkb->map->key_sym_map) {
-                XkbSymMapRec *prev_key_sym_map = xkb->map->key_sym_map;
-
-                xkb->map->key_sym_map = _XkbTypedRealloc(xkb->map->key_sym_map,
-                                                    (maxKC + 1), XkbSymMapRec);
+                _XkbResizeArray(xkb->map->key_sym_map, xkb->max_key_code + 1,
+                                (maxKC + 1), XkbSymMapRec);
                 if (!xkb->map->key_sym_map) {
-                    _XkbFree(prev_key_sym_map);
                     return BadAlloc;
                 }
-                bzero((char *) &xkb->map->key_sym_map[xkb->max_key_code],
-                      tmp * sizeof(XkbSymMapRec));
                 if (changes) {
                     changes->map.changed = _ExtendRange(changes->map.changed,
                                                 XkbKeySymsMask, maxKC,
@@ -746,15 +717,11 @@ XkbChangeKeycodeRange(XkbDescPtr xkb,
                 }
             }
             if (xkb->map->modmap) {
-                unsigned char *prev_modmap = xkb->map->modmap;
-
-                xkb->map->modmap = _XkbTypedRealloc(xkb->map->modmap,
-                                                    (maxKC + 1), unsigned char);
+                _XkbResizeArray(xkb->map->modmap, xkb->max_key_code + 1,
+                                (maxKC + 1), unsigned char);
                 if (!xkb->map->modmap) {
-                    _XkbFree(prev_modmap);
                     return BadAlloc;
                 }
-                bzero((char *) &xkb->map->modmap[xkb->max_key_code], tmp);
                 if (changes) {
                     changes->map.changed = _ExtendRange(changes->map.changed,
                                                 XkbModifierMapMask, maxKC,
@@ -765,17 +732,11 @@ XkbChangeKeycodeRange(XkbDescPtr xkb,
         }
         if (xkb->server) {
             if (xkb->server->behaviors) {
-                XkbBehavior *prev_behaviors = xkb->server->behaviors;
-
-                xkb->server->behaviors =
-                    _XkbTypedRealloc(xkb->server->behaviors, (maxKC + 1),
-                                     XkbBehavior);
+                _XkbResizeArray(xkb->server->behaviors, xkb->max_key_code + 1,
+                                (maxKC + 1), XkbBehavior);
                 if (!xkb->server->behaviors) {
-                    _XkbFree(prev_behaviors);
                     return BadAlloc;
                 }
-                bzero((char *) &xkb->server->behaviors[xkb->max_key_code],
-                      tmp * sizeof(XkbBehavior));
                 if (changes) {
                     changes->map.changed = _ExtendRange(changes->map.changed,
                                                 XkbKeyBehaviorsMask, maxKC,
@@ -784,16 +745,11 @@ XkbChangeKeycodeRange(XkbDescPtr xkb,
                 }
             }
             if (xkb->server->key_acts) {
-                unsigned short *prev_key_acts = xkb->server->key_acts;
-
-                xkb->server->key_acts = _XkbTypedRealloc(xkb->server->key_acts,
-                                                (maxKC + 1), unsigned short);
+                _XkbResizeArray(xkb->server->key_acts, xkb->max_key_code + 1,
+                                (maxKC + 1), unsigned short);
                 if (!xkb->server->key_acts) {
-                    _XkbFree(prev_key_acts);
                     return BadAlloc;
                 }
-                bzero((char *) &xkb->server->key_acts[xkb->max_key_code],
-                      tmp * sizeof(unsigned short));
                 if (changes) {
                     changes->map.changed = _ExtendRange(changes->map.changed,
                                                 XkbKeyActionsMask, maxKC,
@@ -802,16 +758,11 @@ XkbChangeKeycodeRange(XkbDescPtr xkb,
                 }
             }
             if (xkb->server->vmodmap) {
-                unsigned short *prev_vmodmap = xkb->server->vmodmap;
-
-                xkb->server->vmodmap = _XkbTypedRealloc(xkb->server->vmodmap,
-                                                (maxKC + 1), unsigned short);
+                _XkbResizeArray(xkb->server->vmodmap, xkb->max_key_code + 1,
+                                (maxKC + 1), unsigned short);
                 if (!xkb->server->vmodmap) {
-                    _XkbFree(prev_vmodmap);
                     return BadAlloc;
                 }
-                bzero((char *) &xkb->server->vmodmap[xkb->max_key_code],
-                      tmp * sizeof(unsigned short));
                 if (changes) {
                     changes->map.changed = _ExtendRange(changes->map.changed,
                                                 XkbVirtualModMapMask, maxKC,
@@ -821,16 +772,11 @@ XkbChangeKeycodeRange(XkbDescPtr xkb,
             }
         }
         if ((xkb->names) && (xkb->names->keys)) {
-            XkbKeyNameRec *prev_keys = xkb->names->keys;
-
-            xkb->names->keys = _XkbTypedRealloc(xkb->names->keys,
-                                                (maxKC + 1), XkbKeyNameRec);
+            _XkbResizeArray(xkb->names->keys, xkb->max_key_code + 1,
+                            (maxKC + 1), XkbKeyNameRec);
             if (!xkb->names->keys) {
-                _XkbFree(prev_keys);
                 return BadAlloc;
             }
-            bzero((char *) &xkb->names->keys[xkb->max_key_code],
-                  tmp * sizeof(XkbKeyNameRec));
             if (changes) {
                 changes->names.changed = _ExtendRange(changes->names.changed,
                                                       XkbKeyNamesMask, maxKC,

Index: xsrc/external/mit/libX11/dist/src/xlibi18n/XlcDL.c
diff -u xsrc/external/mit/libX11/dist/src/xlibi18n/XlcDL.c:1.8 xsrc/external/mit/libX11/dist/src/xlibi18n/XlcDL.c:1.9
--- xsrc/external/mit/libX11/dist/src/xlibi18n/XlcDL.c:1.8	Tue Oct  4 22:04:39 2016
+++ xsrc/external/mit/libX11/dist/src/xlibi18n/XlcDL.c	Mon Jul  8 22:59:16 2019
@@ -85,6 +85,7 @@ Sun Microsystems, Inc. or its licensors 
 #include "Xlibint.h"
 #include "XlcPublic.h"
 #include "XlcPubI.h"
+#include "reallocarray.h"
 
 #define XI18N_DLREL		2
 
@@ -185,7 +186,7 @@ resolve_object(char *path, const char *l
 
     if (lc_len == 0) { /* True only for the 1st time */
       lc_len = OBJECT_INIT_LEN;
-      xi18n_objects_list = Xmalloc(sizeof(XI18NObjectsListRec) * lc_len);
+      xi18n_objects_list = Xmallocarray(lc_len, sizeof(XI18NObjectsListRec));
       if (!xi18n_objects_list) return;
     }
     snprintf(filename, sizeof(filename), "%s/%s", path, "XI18N_OBJS");
@@ -207,8 +208,9 @@ resolve_object(char *path, const char *l
 
 	if (lc_count == lc_len) {
 	  int new_len = lc_len + OBJECT_INC_LEN;
-	  XI18NObjectsListRec *tmp = Xrealloc(xi18n_objects_list,
-	      sizeof(XI18NObjectsListRec) * new_len);
+	  XI18NObjectsListRec *tmp =
+              Xreallocarray(xi18n_objects_list, new_len,
+                            sizeof(XI18NObjectsListRec));
 	  if (tmp == NULL)
 	      goto done;
 	  xi18n_objects_list = tmp;

Index: xsrc/external/mit/libXi/dist/src/XIPassiveGrab.c
diff -u xsrc/external/mit/libXi/dist/src/XIPassiveGrab.c:1.5 xsrc/external/mit/libXi/dist/src/XIPassiveGrab.c:1.6
--- xsrc/external/mit/libXi/dist/src/XIPassiveGrab.c:1.5	Wed Jul 22 02:23:01 2015
+++ xsrc/external/mit/libXi/dist/src/XIPassiveGrab.c	Mon Jul  8 22:59:17 2019
@@ -38,7 +38,8 @@ _XIPassiveGrabDevice(Display* dpy, int d
                      Window grab_window, Cursor cursor,
                      int grab_mode, int paired_device_mode,
                      Bool owner_events, XIEventMask *mask,
-                     int num_modifiers, XIGrabModifiers *modifiers_inout)
+                     int num_modifiers, XIGrabModifiers *modifiers_inout,
+                     Time time)
 {
     xXIPassiveGrabDeviceReq *req;
     xXIPassiveGrabDeviceReply reply;
@@ -74,6 +75,7 @@ _XIPassiveGrabDevice(Display* dpy, int d
     req->num_modifiers = num_modifiers;
     req->mask_len = (mask->mask_len + 3)/4;
     req->grab_type = grabtype;
+    req->time = time;
 
     len = req->mask_len + num_modifiers;
     SetReqLen(req, len, len);
@@ -118,7 +120,7 @@ XIGrabButton(Display* dpy, int deviceid,
     return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeButton, button,
                                 grab_window, cursor, grab_mode,
                                 paired_device_mode, owner_events, mask,
-                                num_modifiers, modifiers_inout);
+                                num_modifiers, modifiers_inout, CurrentTime);
 }
 
 int
@@ -130,7 +132,7 @@ XIGrabKeycode(Display* dpy, int deviceid
     return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeKeycode, keycode,
                                 grab_window, None, grab_mode, paired_device_mode,
                                 owner_events, mask, num_modifiers,
-                                modifiers_inout);
+                                modifiers_inout, CurrentTime);
 }
 
 int
@@ -142,7 +144,7 @@ XIGrabEnter(Display *dpy, int deviceid, 
     return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeEnter, 0,
                                 grab_window, cursor, grab_mode, paired_device_mode,
                                 owner_events, mask, num_modifiers,
-                                modifiers_inout);
+                                modifiers_inout, CurrentTime);
 }
 
 int
@@ -153,7 +155,7 @@ XIGrabFocusIn(Display *dpy, int deviceid
     return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeFocusIn, 0,
                                 grab_window, None, grab_mode, paired_device_mode,
                                 owner_events, mask, num_modifiers,
-                                modifiers_inout);
+                                modifiers_inout, CurrentTime);
 }
 
 int
@@ -172,7 +174,7 @@ XIGrabTouchBegin(Display *dpy, int devic
     return _XIPassiveGrabDevice(dpy, deviceid, XIGrabtypeTouchBegin, 0,
                                 grab_window, None, XIGrabModeTouch,
                                 GrabModeAsync, owner_events, mask,
-                                num_modifiers, modifiers_inout);
+                                num_modifiers, modifiers_inout, CurrentTime);
 }
 
 

Reply via email to