[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libx11: Changes to 'upstream-unstable'



 .gitignore                     |    1 
 configure.ac                   |   91 ++---------------------
 include/X11/Xlib.h             |   34 ++++----
 include/X11/Xlibint.h          |  126 +++++++++++++++++++++++++++++++--
 man/XFree.man                  |    3 
 modules/im/ximcp/imExten.c     |    2 
 modules/im/ximcp/imLcIm.c      |    6 -
 modules/im/ximcp/imLcPrs.c     |    6 -
 modules/om/generic/omGeneric.c |   75 ++-----------------
 modules/om/generic/omImText.c  |    4 -
 nls/compose.dir.pre            |    8 +-
 nls/en_US.UTF-8/Compose.pre    |  107 +++++++++++++++++++++++++++-
 nls/locale.alias.pre           |   10 +-
 nls/locale.dir.pre             |   10 +-
 nls/pt_PT.UTF-8/Compose.pre    |    3 
 nls/pt_PT.UTF-8/XI18N_OBJS     |    7 +
 nls/pt_PT.UTF-8/XLC_LOCALE.pre |  142 +++++++++++++++++++++++++++++++++++++
 specs/libX11/CH04.xml          |    3 
 src/ClDisplay.c                |    2 
 src/Font.c                     |    2 
 src/FontNames.c                |   25 ++++--
 src/GetAtomNm.c                |   13 +--
 src/GetFPath.c                 |    2 
 src/GetImage.c                 |   29 +++++--
 src/GetWAttrs.c                |   13 +--
 src/IntAtom.c                  |   14 ++-
 src/ListExt.c                  |   14 ++-
 src/Makefile.am                |    1 
 src/ModMap.c                   |    3 
 src/OpenDis.c                  |    4 -
 src/PutImage.c                 |    2 
 src/XlibAsync.c                |   18 +++-
 src/XlibInt.c                  |   35 +++++----
 src/Xxcbint.h                  |    5 -
 src/xcb_io.c                   |   80 +++++++++------------
 src/xcms/HVC.c                 |    8 +-
 src/xcms/IdOfPr.c              |    2 
 src/xcms/LRGB.c                |    6 -
 src/xcms/Lab.c                 |    4 -
 src/xcms/Luv.c                 |    4 -
 src/xcms/XYZ.c                 |    4 -
 src/xcms/cmsColNm.c            |    6 -
 src/xcms/cmsTrig.c             |   11 --
 src/xcms/uvY.c                 |    8 +-
 src/xcms/xyY.c                 |    4 -
 src/xkb/XKBGetByName.c         |    6 +
 src/xkb/XKBNames.c             |    2 
 src/xlibi18n/ICWrap.c          |   15 ++-
 src/xlibi18n/XDefaultIMIF.c    |   66 +++++++----------
 src/xlibi18n/XDefaultOMIF.c    |  156 ++++-------------------------------------
 src/xlibi18n/XlcDL.c           |   22 ++---
 src/xlibi18n/lcPrTxt.c         |    2 
 src/xlibi18n/lcPubWrap.c       |    3 
 53 files changed, 681 insertions(+), 548 deletions(-)

New commits:
commit 8f349feac24aacc958bd816afcc52380764e3d92
Author: Matthieu Herrb <matthieu.herrb@laas.fr>
Date:   Tue Oct 4 21:01:39 2016 +0200

    libX11 1.6.4
    
    Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>

diff --git a/configure.ac b/configure.ac
index b15194a..58f2681 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libX11], [1.6.3],
+AC_INIT([libX11], [1.6.4],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libX11])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([src/config.h include/X11/XlibConf.h])

commit 8ea762f94f4c942d898fdeb590a1630c83235c17
Author: Tobias Stoeckmann <tobias@stoeckmann.org>
Date:   Sun Sep 25 21:25:25 2016 +0200

    Validation of server responses in XGetImage()
    
    Check if enough bytes were received for specified image type and
    geometry. Otherwise GetPixel and other functions could trigger an
    out of boundary read later on.
    
    Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
    Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>

diff --git a/src/GetImage.c b/src/GetImage.c
index c461abc..ff32d58 100644
--- a/src/GetImage.c
+++ b/src/GetImage.c
@@ -59,6 +59,7 @@ XImage *XGetImage (
 	char *data;
 	unsigned long nbytes;
 	XImage *image;
+	int planes;
 	LockDisplay(dpy);
 	GetReq (GetImage, req);
 	/*
@@ -91,18 +92,28 @@ XImage *XGetImage (
 	    return (XImage *) NULL;
 	}
         _XReadPad (dpy, data, nbytes);
-        if (format == XYPixmap)
-	   image = XCreateImage(dpy, _XVIDtoVisual(dpy, rep.visual),
-		  Ones (plane_mask &
-			(((unsigned long)0xFFFFFFFF) >> (32 - rep.depth))),
-		  format, 0, data, width, height, dpy->bitmap_pad, 0);
-	else /* format == ZPixmap */
-           image = XCreateImage (dpy, _XVIDtoVisual(dpy, rep.visual),
-		 rep.depth, ZPixmap, 0, data, width, height,
-		  _XGetScanlinePad(dpy, (int) rep.depth), 0);
+        if (format == XYPixmap) {
+	    image = XCreateImage(dpy, _XVIDtoVisual(dpy, rep.visual),
+		Ones (plane_mask &
+		    (((unsigned long)0xFFFFFFFF) >> (32 - rep.depth))),
+		format, 0, data, width, height, dpy->bitmap_pad, 0);
+	    planes = image->depth;
+	} else { /* format == ZPixmap */
+            image = XCreateImage (dpy, _XVIDtoVisual(dpy, rep.visual),
+		rep.depth, ZPixmap, 0, data, width, height,
+		    _XGetScanlinePad(dpy, (int) rep.depth), 0);
+	    planes = 1;
+	}
 
 	if (!image)
 	    Xfree(data);
+	if (planes < 1 || image->height < 1 || image->bytes_per_line < 1 ||
+	    INT_MAX / image->height <= image->bytes_per_line ||
+	    INT_MAX / planes <= image->height * image->bytes_per_line ||
+	    nbytes < planes * image->height * image->bytes_per_line) {
+	    XDestroyImage(image);
+	    image = NULL;
+	}
 	UnlockDisplay(dpy);
 	SyncHandle();
 	return (image);

commit 8c29f1607a31dac0911e45a0dd3d74173822b3c9
Author: Tobias Stoeckmann <tobias@stoeckmann.org>
Date:   Sun Sep 25 21:22:57 2016 +0200

    The validation of server responses avoids out of boundary accesses.
    
    v2: FontNames.c  return a NULL list whenever a single
    length field from the server is incohent.
    
    Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
    Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>

diff --git a/src/FontNames.c b/src/FontNames.c
index 21dcafe..e55f338 100644
--- a/src/FontNames.c
+++ b/src/FontNames.c
@@ -66,7 +66,7 @@ int *actualCount)	/* RETURN */
 
     if (rep.nFonts) {
 	flist = Xmalloc (rep.nFonts * sizeof(char *));
-	if (rep.length < (INT_MAX >> 2)) {
+	if (rep.length > 0 && rep.length < (INT_MAX >> 2)) {
 	    rlen = rep.length << 2;
 	    ch = Xmalloc(rlen + 1);
 	    /* +1 to leave room for last null-terminator */
@@ -93,11 +93,22 @@ int *actualCount)	/* RETURN */
 	    if (ch + length < chend) {
 		flist[i] = ch + 1;  /* skip over length */
 		ch += length + 1;  /* find next length ... */
-		length = *(unsigned char *)ch;
-		*ch = '\0';  /* and replace with null-termination */
-		count++;
-	    } else
-		flist[i] = NULL;
+		if (ch <= chend) {
+		    length = *(unsigned char *)ch;
+		    *ch = '\0';  /* and replace with null-termination */
+		    count++;
+		} else {
+                    Xfree(flist);
+                    flist = NULL;
+                    count = 0;
+                    break;
+		}
+	    } else {
+                Xfree(flist);
+                flist = NULL;
+                count = 0;
+                break;
+            }
 	}
     }
     *actualCount = count;
diff --git a/src/ListExt.c b/src/ListExt.c
index be6b989..0516e45 100644
--- a/src/ListExt.c
+++ b/src/ListExt.c
@@ -55,7 +55,7 @@ char **XListExtensions(
 
 	if (rep.nExtensions) {
 	    list = Xmalloc (rep.nExtensions * sizeof (char *));
-	    if (rep.length < (INT_MAX >> 2)) {
+	    if (rep.length > 0 && rep.length < (INT_MAX >> 2)) {
 		rlen = rep.length << 2;
 		ch = Xmalloc (rlen + 1);
                 /* +1 to leave room for last null-terminator */
@@ -80,9 +80,13 @@ char **XListExtensions(
 		if (ch + length < chend) {
 		    list[i] = ch+1;  /* skip over length */
 		    ch += length + 1; /* find next length ... */
-		    length = *ch;
-		    *ch = '\0'; /* and replace with null-termination */
-		    count++;
+		    if (ch <= chend) {
+			length = *ch;
+			*ch = '\0'; /* and replace with null-termination */
+			count++;
+		    } else {
+			list[i] = NULL;
+		    }
 		} else
 		    list[i] = NULL;
 	    }
diff --git a/src/ModMap.c b/src/ModMap.c
index a809aa2..49a5d08 100644
--- a/src/ModMap.c
+++ b/src/ModMap.c
@@ -42,7 +42,8 @@ XGetModifierMapping(register Display *dpy)
     GetEmptyReq(GetModifierMapping, req);
     (void) _XReply (dpy, (xReply *)&rep, 0, xFalse);
 
-    if (rep.length < (INT_MAX >> 2)) {
+    if (rep.length < (INT_MAX >> 2) &&
+	(rep.length >> 1) == rep.numKeyPerModifier) {
 	nbytes = (unsigned long)rep.length << 2;
 	res = Xmalloc(sizeof (XModifierKeymap));
 	if (res)

commit 78851f6a03130e3c720b60c3cbf96f8eb216d741
Author: walter harms <wharms@bfs.de>
Date:   Mon Aug 15 19:18:14 2016 +0200

    XFree will accept NULL as argument
    
    since Xfree is a define for free():
      Xlibint.h:#define Xfree(ptr) free((ptr))
    
    Xfree will accept NULL and do nothing.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

diff --git a/man/XFree.man b/man/XFree.man
index ffc513b..89b6408 100644
--- a/man/XFree.man
+++ b/man/XFree.man
@@ -92,6 +92,7 @@ The
 function is a general-purpose Xlib routine that frees the specified data.
 You must use it to free any objects that were allocated by Xlib,
 unless an alternate function is explicitly specified for the object.
-A NULL pointer cannot be passed to this function.
+
+If data is NULL, no operation is performed.
 .SH "SEE ALSO"
 \fI\*(xL\fP

commit 83adf3d1e3d0d6602244381334f75c216da4ab6e
Author: Matthew D. Fuller <fullermd@over-yonder.net>
Date:   Sat Jun 4 11:24:01 2016 -0500

    Fixup param specification for XChangeProperty()
    
    Signed-off-by: Matthew D. Fuller <fullermd@over-yonder.net>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/specs/libX11/CH04.xml b/specs/libX11/CH04.xml
index a147b18..5312db1 100644
--- a/specs/libX11/CH04.xml
+++ b/specs/libX11/CH04.xml
@@ -1761,7 +1761,8 @@ To change a property of a given window, use
   <funcdef><function>XChangeProperty</function></funcdef>
   <paramdef>Display<parameter> *display</parameter></paramdef>
   <paramdef>Window<parameter> w</parameter></paramdef>
-  <paramdef>Atomproperty,<parameter> type</parameter></paramdef>
+  <paramdef>Atom<parameter> property</parameter></paramdef>
+  <paramdef>Atom<parameter> type</parameter></paramdef>
   <paramdef>int<parameter> format</parameter></paramdef>
   <paramdef>int<parameter> mode</parameter></paramdef>
   <paramdef>unsignedchar<parameter> *data</parameter></paramdef>

commit 3129c757f9da8586ab8b8654a56c8f687cc9ef5c
Author: Mats Blakstad <mats.gbproject@gmail.com>
Date:   Sun Feb 28 13:22:03 2016 -0500

     New compose keys for local languages in Togo
    
    Signed-off-by: James Cloos <cloos@jhcloos.com>

diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre
index d88fe36..adc24fb 100644
--- a/nls/en_US.UTF-8/Compose.pre
+++ b/nls/en_US.UTF-8/Compose.pre
@@ -6017,3 +6017,105 @@ XCOMM Given that no extant APLs use ⍮ I will just leave the line in place.
 <Multi_key> <underscore> <U2373>                : "⍸"   U2378   # _ ⍳ APL FUNCTIONAL SYMBOL IOTA UNDERBAR
 <Multi_key> <U2375> <underscore>                : "⍹"   U2379   # ⍵ _ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
 <Multi_key> <underscore> <U2375>                : "⍹"   U2379   # _ ⍵ APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+
+XCOMM Diacritics used in African languages
+<dead_acute> <U025B>                 	: "ɛ́"   # LATIN SMALL LETTER EPSILON WITH ACUTE
+<dead_grave> <U025B>                 	: "ɛ̀"   # LATIN SMALL LETTER EPSILON WITH GRAVE
+<dead_circumflex> <U025B>               : "ɛ̂"   # LATIN SMALL LETTER EPSILON WITH CIRCUMFLEX
+<dead_caron> <U025B>                 	: "ɛ̌"   # LATIN SMALL LETTER EPSILON WITH CARON
+<dead_macron> <U025B>                 	: "ɛ̄"   # LATIN SMALL LETTER EPSILON WITH MACRON
+<dead_tilde> <U025B>                 	: "ɛ̃"   # LATIN SMALL LETTER EPSILON WITH TILDE
+<dead_acute> <dead_tilde> <U025B>       : "ɛ̃́"   # LATIN SMALL LETTER EPSILON WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <U025B>       : "ɛ̃̀"   # LATIN SMALL LETTER EPSILON WITH TILDE AND GRAVE
+<dead_acute> <U0190>                 	: "Ɛ́"   # LATIN CAPITAL LETTER EPSILON WITH ACUTE
+<dead_grave> <U0190>                 	: "Ɛ̀"   # LATIN CAPITAL LETTER EPSILON WITH GRAVE
+<dead_circumflex> <U0190>               : "Ɛ̂"   # LATIN CAPITAL LETTER EPSILON WITH CIRCUMFLEX
+<dead_caron> <U0190>                 	: "Ɛ̌"   # LATIN CAPITAL LETTER EPSILON WITH CARON
+<dead_macron> <U0190>                 	: "Ɛ̄"   # LATIN CAPITAL LETTER EPSILON WITH MACRON
+<dead_tilde> <U0190>                 	: "Ɛ̃"   # LATIN CAPITAL LETTER EPSILON WITH TILDE
+<dead_acute> <dead_tilde> <U0190>       : "Ɛ̃́"   # LATIN CAPITAL LETTER EPSILON WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <U0190>       : "Ɛ̃̀"   # LATIN CAPITAL LETTER EPSILON WITH TILDE AND GRAVE
+<dead_acute> <U0269>                 	: "ɩ́"   # LATIN SMALL LETTER IOTA WITH ACUTE
+<dead_grave> <U0269>                 	: "ɩ̀"   # LATIN SMALL LETTER IOTA WITH GRAVE
+<dead_circumflex> <U0269>               : "ɩ̂"   # LATIN SMALL LETTER IOTA WITH CIRCUMFLEX
+<dead_caron> <U0269>                 	: "ɩ̌"   # LATIN SMALL LETTER IOTA WITH CARON
+<dead_macron> <U0269>                 	: "ɩ̄"   # LATIN SMALL LETTER IOTA WITH MACRON
+<dead_acute> <U0196>                 	: "Ɩ́"   # LATIN CAPITAL LETTER IOTA WITH ACUTE
+<dead_grave> <U0196>                 	: "Ɩ̀"   # LATIN CAPITAL LETTER IOTA WITH GRAVE
+<dead_circumflex> <U0196>               : "Ɩ̂"   # LATIN CAPITAL LETTER IOTA WITH CIRCUMFLEX
+<dead_caron> <U0196>                 	: "Ɩ̌"   # LATIN CAPITAL LETTER IOTA WITH CARON
+<dead_macron> <U0196>                 	: "Ɩ̄"   # LATIN CAPITAL LETTER IOTA WITH MACRON
+<dead_acute> <U0254>                 	: "ɔ́"   # LATIN SMALL LETTER OPEN O WITH ACUTE
+<dead_grave> <U0254>                 	: "ɔ̀"   # LATIN SMALL LETTER OPEN O WITH GRAVE
+<dead_circumflex> <U0254>               : "ɔ̂"   # LATIN SMALL LETTER OPEN O WITH CIRCUMFLEX
+<dead_caron> <U0254>                 	: "ɔ̌"   # LATIN SMALL LETTER OPEN O WITH CARON
+<dead_macron> <U0254>                 	: "ɔ̄"   # LATIN SMALL LETTER OPEN O WITH MACRON
+<dead_tilde> <U0254>                 	: "ɔ̃"   # LATIN SMALL LETTER OPEN O WITH TILDE
+<dead_acute> <dead_tilde> <U0254>       : "ɔ̃́"   # LATIN SMALL LETTER OPEN O WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <U0254>       : "ɔ̃̀"   # LATIN SMALL LETTER OPEN O WITH TILDE AND GRAVE
+<dead_acute> <U0186>                 	: "Ɔ́"   # LATIN CAPITAL LETTER OPEN O WITH ACUTE
+<dead_grave> <U0186>                 	: "Ɔ̀"   # LATIN CAPITAL LETTER OPEN O WITH GRAVE
+<dead_circumflex> <U0186>               : "Ɔ̂"   # LATIN CAPITAL LETTER OPEN O WITH CIRCUMFLEX
+<dead_caron> <U0186>                 	: "Ɔ̌"   # LATIN CAPITAL LETTER OPEN O WITH CARON
+<dead_macron> <U0186>                 	: "Ɔ̄"   # LATIN CAPITAL LETTER OPEN O WITH MACRON
+<dead_tilde> <U0186>                 	: "Ɔ̃"   # LATIN CAPITAL LETTER OPEN O WITH TILDE
+<dead_acute> <dead_tilde> <U0186>       : "Ɔ̃́"   # LATIN CAPITAL LETTER OPEN O WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <U0186>       : "Ɔ̃̀"   # LATIN CAPITAL LETTER OPEN O WITH TILDE AND GRAVE
+<dead_acute> <U01DD>                 	: "ǝ́"   # LATIN SMALL LETTER TURNED E WITH ACUTE
+<dead_grave> <U01DD>                 	: "ǝ̀"   # LATIN SMALL LETTER TURNED E WITH GRAVE
+<dead_circumflex> <U01DD>               : "ǝ̂"   # LATIN SMALL LETTER TURNED E WITH CIRCUMFLEX
+<dead_caron> <U01DD>                 	: "ǝ̌"   # LATIN SMALL LETTER TURNED E WITH CARON
+<dead_macron> <U01DD>                 	: "ǝ̄"   # LATIN SMALL LETTER TURNED E WITH MACRON
+<dead_tilde> <U01DD>                 	: "ǝ̃"   # LATIN SMALL LETTER TURNED E WITH TILDE
+<dead_acute> <dead_tilde> <U01DD>       : "ǝ̃́"   # LATIN SMALL LETTER TURNED E WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <U01DD>       : "ǝ̃̀"   # LATIN SMALL LETTER TURNED E WITH TILDE AND GRAVE
+<dead_acute> <U018E>                 	: "Ǝ́"   # LATIN CAPITAL LETTER TURNED E WITH ACUTE
+<dead_grave> <U018E>                 	: "Ǝ̀"   # LATIN CAPITAL LETTER TURNED E WITH GRAVE
+<dead_circumflex> <U018E>               : "Ǝ̂"   # LATIN CAPITAL LETTER TURNED E WITH CIRCUMFLEX
+<dead_caron> <U018E>                 	: "Ǝ̌"   # LATIN CAPITAL LETTER TURNED E WITH CARON
+<dead_macron> <U018E>                 	: "Ǝ̄"   # LATIN CAPITAL LETTER TURNED E WITH MACRON
+<dead_tilde> <U018E>                 	: "Ǝ̃"   # LATIN CAPITAL LETTER TURNED E WITH TILDE
+<dead_acute> <dead_tilde> <U018E>       : "Ǝ̃́"   # LATIN CAPITAL LETTER TURNED E WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <U018E>       : "Ǝ̃̀"   # LATIN CAPITAL LETTER TURNED E WITH TILDE AND GRAVE
+<dead_acute> <U028B>                 	: "ʋ́"   # LATIN SMALL LETTER V WITH HOOK WITH ACUTE
+<dead_grave> <U028B>                 	: "ʋ̀"   # LATIN SMALL LETTER V WITH HOOK WITH GRAVE
+<dead_circumflex> <U028B>               : "ʋ̂"   # LATIN SMALL LETTER V WITH HOOK WITH CIRCUMFLEX
+<dead_caron> <U028B>                 	: "ʋ̌"   # LATIN SMALL LETTER V WITH HOOK WITH CARON
+<dead_macron> <U028B>                 	: "ʋ̄"   # LATIN SMALL LETTER V WITH HOOK WITH MACRON
+<dead_acute> <U01B2>                 	: "Ʋ́"   # LATIN CAPITAL LETTER V WITH HOOK WITH ACUTE
+<dead_grave> <U01B2>                 	: "Ʋ̀"   # LATIN CAPITAL LETTER V WITH HOOK WITH GRAVE
+<dead_circumflex> <U01B2>               : "Ʋ̂"   # LATIN CAPITAL LETTER V WITH HOOK WITH CIRCUMFLEX
+<dead_caron> <U01B2>                 	: "Ʋ̌"   # LATIN CAPITAL LETTER V WITH HOOK WITH CARON
+<dead_macron> <U01B2>                 	: "Ʋ̄"   # LATIN CAPITAL LETTER V WITH HOOK WITH MACRON
+<dead_acute> <U028A>                 	: "ʊ́"   # LATIN SMALL LETTER UPSILON WITH ACUTE
+<dead_grave> <U028A>                 	: "ʊ̀"   # LATIN SMALL LETTER UPSILONK WITH GRAVE
+<dead_circumflex> <U028A>               : "ʊ̂"   # LATIN SMALL LETTER UPSILON WITH CIRCUMFLEX
+<dead_caron> <U028A>                 	: "ʊ̌"   # LATIN SMALL LETTER UPSILON WITH CARON
+<dead_macron> <U028A>                 	: "ʊ̄"   # LATIN SMALL LETTER UPSILON WITH MACRON
+<dead_acute> <U01B1>                 	: "Ʊ́"   # LATIN CAPITAL LETTER UPSILON WITH ACUTE
+<dead_grave> <U01B1>                 	: "Ʊ̀"   # LATIN CAPITAL LETTER UPSILONK WITH GRAVE
+<dead_circumflex> <U01B1>               : "Ʊ̂"   # LATIN CAPITAL LETTER UPSILON WITH CIRCUMFLEX
+<dead_caron> <U01B1>                 	: "Ʊ̌"   # LATIN CAPITAL LETTER UPSILON WITH CARON
+<dead_macron> <U01B1>                 	: "Ʊ̄"   # LATIN CAPITAL LETTER UPSILON WITH MACRON
+<dead_acute> <dead_tilde> <a>		: "ã́"   # LATIN SMALL LETTER A WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <a>		: "ã̀"   # LATIN SMALL LETTER A WITH TILDE AND GRAVE
+<dead_acute> <dead_tilde> <A>		: "Ã́"   # LATIN CAPITAL LETTER A WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <A>		: "Ã̀"   # LATIN CAPITAL LETTER A WITH TILDE AND GRAVE
+<dead_acute> <dead_tilde> <e>		: "ẽ́"   # LATIN SMALL LETTER E WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <e>		: "ẽ̀"   # LATIN SMALL LETTER E WITH TILDE AND GRAVE
+<dead_acute> <dead_tilde> <E>		: "Ẽ́"   # LATIN CAPITAL LETTER E WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <E>		: "Ẽ̀"   # LATIN CAPITAL LETTER E WITH TILDE AND GRAVE
+<dead_acute> <dead_tilde> <i>		: "ĩ́"   # LATIN SMALL LETTER I WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <i>		: "ĩ̀"   # LATIN SMALL LETTER I WITH TILDE AND GRAVE
+<dead_acute> <dead_tilde> <I>		: "Ĩ́"   # LATIN CAPITAL LETTER I WITH TILDE AND ACUTE
+<dead_grave> <dead_tilde> <I>		: "Ĩ̀"   # LATIN CAPITAL LETTER I WITH TILDE AND GRAVE
+<dead_grave> <dead_tilde> <o>		: "õ̀"   # LATIN SMALL LETTER O WITH TILDE AND GRAVE
+<dead_grave> <dead_tilde> <O>		: "Õ̀"   # LATIN CAPITAL LETTER O WITH TILDE AND GRAVE
+<dead_grave> <dead_tilde> <u>		: "ũ̀"   # LATIN SMALL LETTER U WITH TILDE AND GRAVE
+<dead_grave> <dead_tilde> <U>		: "Ũ̀"   # LATIN CAPITAL LETTER U WITH TILDE AND GRAVE
+<dead_grave> <m>                 	: "m̀"   # LATIN SMALL LETTER M WITH GRAVE
+<dead_grave> <M>                 	: "M̀"   # LATIN CAPITAL LETTER M WITH GRAVE
+<dead_acute> <eng>			: "ŋ́"   # LATIN SMALL LETTER ENG WITH ACUTE
+<dead_grave> <eng>			: "ŋ̀"   # LATIN SMALL LETTER ENG WITH GRAVE
+<dead_acute> <ENG> 			: "Ŋ́"   # LATIN CAPITAL LETTER ENG WITH ACUTE
+<dead_grave> <ENG>			: "Ŋ̀"   # LATIN CAPITAL LETTER ENG WITH GRAVE

commit e1011b9e2f6c82255959cf3cc1d8cda402ded0a9
Author: Daniel Albers <daniel@lbe.rs>
Date:   Wed Mar 9 14:35:48 2016 +0100

    Add Compose sequence for U+1F4A9.
    
    Signed-off-by: Daniel Albers <daniel@lbe.rs>

diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre
index 2041757..d88fe36 100644
--- a/nls/en_US.UTF-8/Compose.pre
+++ b/nls/en_US.UTF-8/Compose.pre
@@ -278,6 +278,8 @@ XCOMM Other symbols
 <Multi_key> <colon> <parenleft>         : "☹"   U2639 # WHITE FROWNING FACE
 <Multi_key> <backslash> <o> <slash>		: "🙌"		# PERSON RAISING BOTH HANDS IN CELEBRATION
 
+<Multi_key> <p> <o> <o>                 : "💩"  U1F4A9 # PILE OF POO
+
 <Multi_key> <F> <U>                     : "🖕"  U1F595 # REVERSED HAND WITH MIDDLE FINGER EXTENDED
 <Multi_key> <L> <L> <A> <P>             : "🖖"  U1F596 # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
 

commit 6d7bb040c928485f2557c2c914b95cffb2354179
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 6 14:18:32 2016 -0800

    xcms: use size_t for pointer offsets passed to strncmp
    
    instead of converting to int and back
    
    Fixes clang warnings of the form:
    HVC.c:190:43: warning: implicit conversion changes signedness: 'int' to
          'unsigned long' [-Wsign-conversion]
              if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) {
                  ~~~~~~~
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/xcms/HVC.c b/src/xcms/HVC.c
index 57e80dc..ce02ab3 100644
--- a/src/xcms/HVC.c
+++ b/src/xcms/HVC.c
@@ -176,13 +176,13 @@ TekHVC_ParseString(
  *		XcmsSuccess if valid.
  */
 {
-    int n;
+    size_t n;
     char *pchar;
 
     if ((pchar = strchr(spec, ':')) == NULL) {
 	return(XcmsFailure);
     }
-    n = (int)(pchar - spec);
+    n = (size_t)(pchar - spec);
 
     /*
      * Check for proper prefix.
diff --git a/src/xcms/LRGB.c b/src/xcms/LRGB.c
index d8bb9a9..380b4d1 100644
--- a/src/xcms/LRGB.c
+++ b/src/xcms/LRGB.c
@@ -1405,13 +1405,13 @@ XcmsLRGB_RGBi_ParseString(
  *		0 if failed, non-zero otherwise.
  */
 {
-    int n;
+    size_t n;
     char *pchar;
 
     if ((pchar = strchr(spec, ':')) == NULL) {
 	return(XcmsFailure);
     }
-    n = (int)(pchar - spec);
+    n = (size_t)(pchar - spec);
 
     /*
      * Check for proper prefix.
diff --git a/src/xcms/XYZ.c b/src/xcms/XYZ.c
index 40d6ed3..0544b6a 100644
--- a/src/xcms/XYZ.c
+++ b/src/xcms/XYZ.c
@@ -120,13 +120,13 @@ CIEXYZ_ParseString(
  *	RETURNS
  */
 {
-    int n;
+    size_t n;
     char *pchar;
 
     if ((pchar = strchr(spec, ':')) == NULL) {
 	return(XcmsFailure);
     }
-    n = (int)(pchar - spec);
+    n = (size_t)(pchar - spec);
 
     /*
      * Check for proper prefix.
diff --git a/src/xcms/cmsColNm.c b/src/xcms/cmsColNm.c
index 74729ef..020aa4d 100644
--- a/src/xcms/cmsColNm.c
+++ b/src/xcms/cmsColNm.c
@@ -126,13 +126,13 @@ _XcmsColorSpaceOfString(
  */
 {
     XcmsColorSpace	**papColorSpaces;
-    int n;
+    size_t n;
     char *pchar;
 
     if ((pchar = strchr(color_string, ':')) == NULL) {
 	return(XcmsFailure);
     }
-    n = (int)(pchar - color_string);
+    n = (size_t)(pchar - color_string);
 
     if (ccc == NULL) {
 	return(NULL);
diff --git a/src/xcms/uvY.c b/src/xcms/uvY.c
index 24ab5ee..9f0ad2b 100644
--- a/src/xcms/uvY.c
+++ b/src/xcms/uvY.c
@@ -135,13 +135,13 @@ CIEuvY_ParseString(
  *		0 if failed, non-zero otherwise.
  */
 {
-    int n;
+    size_t n;
     char *pchar;
 
     if ((pchar = strchr(spec, ':')) == NULL) {
 	return(XcmsFailure);
     }
-    n = (int)(pchar - spec);
+    n = (size_t)(pchar - spec);
 
     /*
      * Check for proper prefix.

commit a9266804eed38a83897ab5f0f9f8a8ab82a98882
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 6 13:32:44 2016 -0800

    xcms: use unsigned indexes when looping through unsigned values
    
    Clears many gcc warnings of the form:
    
    uvY.c: In function ‘XcmsCIEuvYToCIEXYZ’:
    uvY.c:263:19: warning: comparison between signed and unsigned integer
      expressions [-Wsign-compare]
         for (i = 0; i < nColors; i++, pColor++) {
                       ^
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/xcms/HVC.c b/src/xcms/HVC.c
index 80f1735..57e80dc 100644
--- a/src/xcms/HVC.c
+++ b/src/xcms/HVC.c
@@ -349,7 +349,7 @@ XcmsTekHVCToCIEuvY(
     XcmsCIEuvY	uvY_return;
     XcmsFloat	tempHue, u, v;
     XcmsFloat	tmpVal;
-    register int i;
+    unsigned int i;
 
     /*
      * Check arguments
@@ -468,7 +468,7 @@ XcmsCIEuvYToTekHVC(
     XcmsColor	*pColor = pColors_in_out;
     XcmsColor	whitePt;
     XcmsTekHVC	HVC_return;
-    register int i;
+    unsigned int i;
 
     /*
      * Check arguments
diff --git a/src/xcms/LRGB.c b/src/xcms/LRGB.c
index 461d07d..d8bb9a9 100644
--- a/src/xcms/LRGB.c
+++ b/src/xcms/LRGB.c
@@ -966,7 +966,7 @@ _XcmsGetTableType1(
  *
  */
 {
-    int count;
+    unsigned int count;
     unsigned int max_index;
     IntensityRec *pIRec;
 
diff --git a/src/xcms/Lab.c b/src/xcms/Lab.c
index 02c8d3b..bf6ae54 100644
--- a/src/xcms/Lab.c
+++ b/src/xcms/Lab.c
@@ -251,7 +251,7 @@ XcmsCIELabToCIEXYZ(
     XcmsCIEXYZ XYZ_return;
     XcmsFloat tmpFloat, tmpL;
     XcmsColor whitePt;
-    int i;
+    unsigned int i;
     XcmsColor *pColor = pColors_in_out;
 
     /*
@@ -354,7 +354,7 @@ XcmsCIEXYZToCIELab(
     XcmsCIELab Lab_return;
     XcmsFloat fX_Xn, fY_Yn, fZ_Zn;
     XcmsColor whitePt;
-    int i;
+    unsigned int i;
     XcmsColor *pColor = pColors_in_out;
 
     /*
diff --git a/src/xcms/Luv.c b/src/xcms/Luv.c
index 82bc294..c27018a 100644
--- a/src/xcms/Luv.c
+++ b/src/xcms/Luv.c
@@ -251,7 +251,7 @@ XcmsCIELuvToCIEuvY(
     XcmsColor	whitePt;
     XcmsCIEuvY	uvY_return;
     XcmsFloat	tmpVal;
-    register int i;
+    unsigned int i;
 
     /*
      * Check arguments
@@ -343,7 +343,7 @@ XcmsCIEuvYToCIELuv(
     XcmsColor	whitePt;
     XcmsCIELuv	Luv_return;
     XcmsFloat	tmpVal;
-    register int i;
+    unsigned int i;
 
     /*
      * Check arguments
diff --git a/src/xcms/uvY.c b/src/xcms/uvY.c
index 5344fb1..24ab5ee 100644
--- a/src/xcms/uvY.c
+++ b/src/xcms/uvY.c
@@ -243,7 +243,7 @@ XcmsCIEuvYToCIEXYZ(
 {
     XcmsCIEXYZ XYZ_return;
     XcmsColor whitePt;
-    int i;
+    unsigned int i;
     XcmsColor *pColor = pColors_in_out;
     XcmsFloat div, x, y, z, Y;
 
@@ -358,7 +358,7 @@ XcmsCIEXYZToCIEuvY(
 {
     XcmsCIEuvY uvY_return;
     XcmsColor whitePt;
-    int i;
+    unsigned int i;
     XcmsColor *pColor = pColors_in_out;
     XcmsFloat div;
 
diff --git a/src/xcms/xyY.c b/src/xcms/xyY.c
index 6f94574..88206c3 100644
--- a/src/xcms/xyY.c
+++ b/src/xcms/xyY.c
@@ -253,7 +253,7 @@ XcmsCIExyYToCIEXYZ(
     XcmsCIEXYZ	XYZ_return;
     XcmsFloat	div;		/* temporary storage in case divisor is zero */
     XcmsFloat	u, v, x, y, z;	/* temporary storage */
-    register int i;
+    unsigned int i;
 
     /*
      * Check arguments
@@ -359,7 +359,7 @@ XcmsCIEXYZToCIExyY(
     XcmsColor	*pColor = pColors_in_out;
     XcmsCIExyY	xyY_return;
     XcmsFloat	div;		/* temporary storage in case divisor is zero */
-    register int i;
+    unsigned int i;
 
     /*
      * Check arguments

commit 0ee0d383b4488b7b90d8bd50b75c371e0dc0d397
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 6 13:01:25 2016 -0800

    xcms: use size_t for strlen/sizeof values instead of converting to int & back
    
    Fixes gcc warnings of the form:
    
    IdOfPr.c: In function ‘XcmsFormatOfPrefix’:
    IdOfPr.c:69:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if ((len = strlen(prefix)) >= sizeof(string_buf)) {
                                    ^
    IdOfPr.c:83:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       if (len >= sizeof(string_buf)) Xfree(string_lowered);
               ^
    IdOfPr.c:97:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       if (len >= sizeof(string_buf)) Xfree(string_lowered);
               ^
    IdOfPr.c:104:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (len >= sizeof(string_buf)) Xfree(string_lowered);
                 ^
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/xcms/IdOfPr.c b/src/xcms/IdOfPr.c
index e15f34f..9f43dd3 100644
--- a/src/xcms/IdOfPr.c
+++ b/src/xcms/IdOfPr.c
@@ -61,7 +61,7 @@ XcmsFormatOfPrefix(char *prefix)
     XcmsColorSpace	**papColorSpaces;
     char		string_buf[64];
     char		*string_lowered;
-    int			len;
+    size_t		len;
 
     /*
      * While copying prefix to string_lowered, convert to lowercase
diff --git a/src/xcms/cmsColNm.c b/src/xcms/cmsColNm.c
index ab6e4e8..74729ef 100644
--- a/src/xcms/cmsColNm.c
+++ b/src/xcms/cmsColNm.c
@@ -198,7 +198,7 @@ _XcmsParseColorString(
     XcmsColorSpace	*pColorSpace;
     char		string_buf[64];
     char		*string_lowered;
-    int			len;
+    size_t		len;
     int			res;
 
     if (ccc == NULL) {

commit 4de6ed3e7b1833c52c9d58ab74d59d57ca2a9f0d
Author: Dominik Muth <nxdomainuser-muth@yahoo.com>
Date:   Thu Mar 26 07:52:58 2015 +0100

    Xlib.h: Fix macros imitating C functions.
    
    The basic rule "put parantheses around macro parameters" should be
    observed where possible. Otherwise code like
    
        ConnectionNumber(foo = bar);
    
    fails to compile. (It obviously passes if ConnectionNumber is a C
    function.) There are several other macros amended for the same reason.
    
    This bug appeared while building http://ioccc.org/1993/cmills.c, so
    historically it was not present.
    
    Signed-off-by: Dominik Muth <muth@nxdomain.no-ip.biz>
    Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/include/X11/Xlib.h b/include/X11/Xlib.h
index 2bffa76..84403f7 100644
--- a/include/X11/Xlib.h
+++ b/include/X11/Xlib.h
@@ -88,39 +88,39 @@ typedef char *XPointer;
 #define QueuedAfterReading 1
 #define QueuedAfterFlush 2
 
-#define ConnectionNumber(dpy) 	(((_XPrivDisplay)dpy)->fd)
+#define ConnectionNumber(dpy) 	(((_XPrivDisplay)(dpy))->fd)
 #define RootWindow(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->root)
-#define DefaultScreen(dpy) 	(((_XPrivDisplay)dpy)->default_screen)
+#define DefaultScreen(dpy) 	(((_XPrivDisplay)(dpy))->default_screen)
 #define DefaultRootWindow(dpy) 	(ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
 #define DefaultVisual(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_visual)
 #define DefaultGC(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->default_gc)
 #define BlackPixel(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->black_pixel)
 #define WhitePixel(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->white_pixel)
 #define AllPlanes 		((unsigned long)~0L)
-#define QLength(dpy) 		(((_XPrivDisplay)dpy)->qlen)
+#define QLength(dpy) 		(((_XPrivDisplay)(dpy))->qlen)
 #define DisplayWidth(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->width)
 #define DisplayHeight(dpy, scr) (ScreenOfDisplay(dpy,scr)->height)
 #define DisplayWidthMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mwidth)
 #define DisplayHeightMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mheight)
 #define DisplayPlanes(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth)
 #define DisplayCells(dpy, scr) 	(DefaultVisual(dpy,scr)->map_entries)
-#define ScreenCount(dpy) 	(((_XPrivDisplay)dpy)->nscreens)
-#define ServerVendor(dpy) 	(((_XPrivDisplay)dpy)->vendor)
-#define ProtocolVersion(dpy) 	(((_XPrivDisplay)dpy)->proto_major_version)
-#define ProtocolRevision(dpy) 	(((_XPrivDisplay)dpy)->proto_minor_version)
-#define VendorRelease(dpy) 	(((_XPrivDisplay)dpy)->release)
-#define DisplayString(dpy) 	(((_XPrivDisplay)dpy)->display_name)
+#define ScreenCount(dpy) 	(((_XPrivDisplay)(dpy))->nscreens)
+#define ServerVendor(dpy) 	(((_XPrivDisplay)(dpy))->vendor)
+#define ProtocolVersion(dpy) 	(((_XPrivDisplay)(dpy))->proto_major_version)
+#define ProtocolRevision(dpy) 	(((_XPrivDisplay)(dpy))->proto_minor_version)
+#define VendorRelease(dpy) 	(((_XPrivDisplay)(dpy))->release)
+#define DisplayString(dpy) 	(((_XPrivDisplay)(dpy))->display_name)
 #define DefaultDepth(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->root_depth)
 #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
-#define BitmapUnit(dpy) 	(((_XPrivDisplay)dpy)->bitmap_unit)
-#define BitmapBitOrder(dpy) 	(((_XPrivDisplay)dpy)->bitmap_bit_order)
-#define BitmapPad(dpy) 		(((_XPrivDisplay)dpy)->bitmap_pad)
-#define ImageByteOrder(dpy) 	(((_XPrivDisplay)dpy)->byte_order)
-#define NextRequest(dpy)	(((_XPrivDisplay)dpy)->request + 1)
-#define LastKnownRequestProcessed(dpy)	(((_XPrivDisplay)dpy)->last_request_read)
+#define BitmapUnit(dpy) 	(((_XPrivDisplay)(dpy))->bitmap_unit)
+#define BitmapBitOrder(dpy) 	(((_XPrivDisplay)(dpy))->bitmap_bit_order)
+#define BitmapPad(dpy) 		(((_XPrivDisplay)(dpy))->bitmap_pad)
+#define ImageByteOrder(dpy) 	(((_XPrivDisplay)(dpy))->byte_order)
+#define NextRequest(dpy)	(((_XPrivDisplay)(dpy))->request + 1)
+#define LastKnownRequestProcessed(dpy)	(((_XPrivDisplay)(dpy))->last_request_read)
 
 /* macros for screen oriented applications (toolkit) */
-#define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
+#define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)(dpy))->screens[scr])
 #define DefaultScreenOfDisplay(dpy) ScreenOfDisplay(dpy,DefaultScreen(dpy))
 #define DisplayOfScreen(s)	((s)->display)
 #define RootWindowOfScreen(s)	((s)->root)
@@ -1009,7 +1009,7 @@ typedef union _XEvent {
 } XEvent;
 #endif
 
-#define XAllocID(dpy) ((*((_XPrivDisplay)dpy)->resource_alloc)((dpy)))
+#define XAllocID(dpy) ((*((_XPrivDisplay)(dpy))->resource_alloc)((dpy)))
 
 /*
  * per character font metric information.

commit 3706b0f2b14cc97578a6bee620266edca2722ebf
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Nov 15 18:03:25 2013 -0800

    Don't need to link libX11-xcb against libX11
    
    libX11-xcb only accesses data structures defined in X11 headers,
    it doesn't call any functions or reference any global variables
    in libX11 itself.  (Seems to have been left from previous XCL
    implementation.)
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/Makefile.am b/src/Makefile.am
index ceb8366..15de59b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -346,7 +346,6 @@ EXTRA_DIST = \
 
 libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h
 libX11_xcb_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-libX11_xcb_la_LIBADD = libX11.la
 
 #
 # Figure out which sub-libraries to link into Xlib

commit eddf1bbd18872b286a9f939140f0cd9ba4e93804
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 22 11:44:25 2016 -0800

    Stop checking for preferred order of local transports
    
    Removes --with-local-transport-order=... flag to configure.
    
    Code which used this ordered list was removed in commit 15e5eaf6289
    which outsourced X11 connection handling & authentication to libxcb.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>

diff --git a/configure.ac b/configure.ac
index 20b01cd..b15194a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -87,78 +87,6 @@ m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$])
 # Transport selection macro from xtrans.m4
 XTRANS_CONNECTION_FLAGS
 
-# Preferred order to try transports for local connections
-AC_MSG_CHECKING([what order to try transports in for local connections])
-DEFAULT_LOCAL_TRANS=""
-case $host_os in
-	solaris*)
-		# On Solaris 2.6 through 9, named pipes (LOCAL_TRANS) were
-		# faster than Unix domain sockets, but on Solaris 10 & later,
-		# Unix domain sockets are faster now.
-		if test "$UNIXCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}UNIX_TRANS"
-		fi
-		if test "$LOCALCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}LOCAL_TRANS"
-		fi
-		if test "$TCPCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}TCP_TRANS"
-		fi
-		;;
-	linux*)
-		# LOCAL_TRANS is used for abstract sockets.
-		if test "$UNIXCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}LOCAL_TRANS,UNIX_TRANS"
-		fi
-		if test "$TCPCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}TCP_TRANS"
-		fi
-		;;
-	*)
-		if test "$LOCALCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}LOCAL_TRANS"
-		fi
-		if test "$UNIXCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}UNIX_TRANS"
-		fi
-		if test "$TCPCONN" = "yes" ; then
-			if test ! "x$DEFAULT_LOCAL_TRANS" = "x" ; then
-				DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS},"
-			fi
-			DEFAULT_LOCAL_TRANS="${DEFAULT_LOCAL_TRANS}TCP_TRANS"
-		fi
-		;;
-esac
-
-AC_ARG_WITH(local-transport-order,
-	AS_HELP_STRING([--with-local-transport-order=LIST], [preference sorted list of transport types to try for local connections]),
-	[LOCAL_TRANSPORT_LIST=$withval],
-	[LOCAL_TRANSPORT_LIST=$DEFAULT_LOCAL_TRANS])
-AC_DEFINE_UNQUOTED([LOCAL_TRANSPORT_LIST], [$LOCAL_TRANSPORT_LIST],
-   [preference sorted list of transport types to try for local connections])
-AC_MSG_RESULT([$LOCAL_TRANSPORT_LIST])
-
 # Check for dlopen
 AC_MSG_CHECKING([if run-time linking is supported])
 AC_SEARCH_LIBS(dlopen,[dl svld])

commit 1a66c1e964ff8d11382313404f48b5a3d5ed8be8
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Fri Jan 22 09:39:28 2016 -0800

    Stop checking XTRANS_SECURE_RPC_FLAGS since we no longer use them
    
    Removes --enable-secure-rpc & --disable-secure-rpc flags to configure
    
    Code that used SECURE_RPC definitions was removed in commit 15e5eaf6289
    which outsourced X11 connection handling & authentication to libxcb.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>

diff --git a/configure.ac b/configure.ac
index 663abf2..20b01cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -87,9 +87,6 @@ m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$])
 # Transport selection macro from xtrans.m4
 XTRANS_CONNECTION_FLAGS
 
-# Secure RPC detection macro from xtrans.m4
-XTRANS_SECURE_RPC_FLAGS
-
 # Preferred order to try transports for local connections
 AC_MSG_CHECKING([what order to try transports in for local connections])
 DEFAULT_LOCAL_TRANS=""

commit 7eb724dc24505f1591ef32620fa63f079b540646
Author: Olivier Fourdan <ofourdan@redhat.com>
Date:   Thu Jan 21 11:54:19 2016 +0100

    XKB: fix XkbGetKeyboardByName with Xming server
    
    XkbGetKeyboardByName relies on flags to read the data from the server.
    
    If the X server sends us the wrong flags or if a subreply is smaller
    than it should be, XkbGetKeyboardByName will not read all the available
    data and leave data in the buffer, which will cause the next _XReply()
    to fail with:
    
    [xcb] Extra reply data still left in queue
    [xcb] This is most likely caused by a broken X extension library
    [xcb] Aborting, sorry about that.


Reply to: