commit 4c96f3567a8d045ee57b886fddc9618b71282530
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Thu Dec 9 19:51:52 2021 -0800

    libX11 1.7.3.1
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit c1710589bb00d6f442a383fc41f0d6496b436c88
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Tue Dec 7 08:29:43 2021 -0800

    specs/XIM: Fix "encording" typos
    
    Fixes: #145
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit e30771b4bbdd84fc7ff64a1cda483a46edb5707b
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Mon Dec 6 17:04:14 2021 -0800

    libX11 1.7.3
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 934417b1e89fe715b9cf6c0d62a3867fa1f5bccb
Author: Liang Chang <l-chang@users.sourceforge.net>
Date:   Tue Sep 7 18:54:10 2021 +0800

    Make Xutf8DrawString works correctly with ISO10646 fonts.
    
    Signed-off-by: Liang Chang <l-chang@users.sourceforge.net>

commit 3ad36c5d3ddca3e4c97faaf87b72a53954d1f473
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Thu Dec 2 17:48:55 2021 -0800

    Build xz tarballs instead of bzip2
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 93a050c3ad2d2264d3880db3791387b1a9bf2e9e
Author: Tatu Frisk <tatu.frisk@ge.com>
Date:   Tue Mar 14 14:41:27 2017 +0200

    Fix hanging issue in _XReply
    
    Assume event queue is empty if another thread is blocking waiting for event.
    
    If one thread was blocking waiting for an event and another thread sent a
    reply to the X server, both threads got blocked until an event was
    received.
    
    Signed-off-by: Tatu Frisk <tatu.frisk@ge.com>
    Signed-off-by: Jose Alarcon <jose.alarcon@ge.com>

commit 8382253010267b93c9aeffc769e3f5e43d698094
Author: Matthieu Herrb <matthieu@herrb.eu>
Date:   Mon Aug 30 21:47:09 2021 +0200

    Avoid NULL pointer deref. Fixes issue #47.
    
    Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>

commit 58d7b540c453601faf942c6f19f8277a5c5f78cc
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Dec 1 14:31:16 2021 +1000

    gitlab CI: update to use the ci-fairy image
    
    Let's use the pre-prepared image instead of building our own.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 150154c994829f9f3734a560f99f70b21d86b49c
Author: Hodong <hodong@nimfsoft.com>
Date:   Sun Nov 14 06:36:42 2021 +0000

    Fix a typo

commit 2356e59ff24f8d1b25cdc4dffc5171c65dc2b86e
Author: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
Date:   Sun Sep 5 10:25:38 2021 +0300

    libX11: do not crash in GetResReq() macro
    
    When _XGetRequest() detects that requested length exceeds remaining display
    output buffer capacity it would return NULL. GetResReq() macro obtains "req"
    pointer from a call to _XGetRequest() and then proceeds to assign request id
    through "req" pointer which leads to NULL pointer dereference in this case.
    
    Fix this by checking if "req" is valid before assigning request id.
    
    Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>

commit e92efc63acd7b377faa9e534f4bf52aaa86be2a9
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Jul 27 11:46:19 2021 +1000

    makekeys: handle the new _EVDEVK xorgproto symbols
    
    These keys are all defined through a macro in the form:
       #define XF86XK_BrightnessAuto                _EVDEVK(0x0F4)
    
    The _EVDEVK macro is simply an offset of 0x10081000.
    Let's parse these lines correctly so those keysyms end up in our
    hashtables.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit d01d23374107f6fc55511f02559cf75be7bdf448
Author: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Date:   Wed Jun 16 12:17:04 2021 +0100

    Avoid undefined behaviour after realloc()
    
    Adding the offset between the realloc result and the old allocation to
    update pointers into the new allocation is undefined behaviour: the
    old pointers are no longer valid after realloc() according to the C
    standard. While this works on almost all architectures and compilers,
    it causes  problems on architectures that track pointer bounds (e.g.
    CHERI or Arm's Morello): the value_list pointers will still have the
    bounds of the previous allocation and therefore any dereference will
    result in a run-time trap.
    
    I found this due to a crash (dereferencing an invalid capability) while
    trying to run `xev` over SSH on a CHERI-RISC-V system. With these two
    realloc changes, and https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/merge_requests/41
    I am able to succesfully run `xev` compiled for CHERI-RISC-V.
    
    Signed-off-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>

commit 1c845834a32421abb59408aee259ac0bef054d30
Author: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Date:   Tue Jun 15 08:46:53 2021 +0100

    Fix cross-compilation from macOS
    
    We can't use `LC_CTYPE=C sed` there since /usr/bin/sed is not compatible
    with the expressions in nls/ (`sed: RE error: illegal byte sequence`).
    To fix this use $(SED) instead which autotools will set to a GNU
    version of sed (usually /usr/local/bin/gsed) on macOS.
    
    Signed-off-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>

commit 401f58f8ba258d4e7ce56a8f756595b72e544c15
Author: Lev Korol <epicatsupercell@gmail.com>
Date:   Sun Apr 11 21:57:45 2021 +0300

    nls: Add en_IL locale
    
    Signed-off-by: Lev Korol <epicatsupercell@gmail.com>

commit f906fe8e9769e4313294b68e61c402610ade69da
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Jun 5 09:12:13 2021 -0700

    libX11 1.7.2
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 51b73ac0acda65005c8a9f17ca4ea7281b00ca84
Author: Tobias Stoeckmann <tobias@stoeckmann.org>
Date:   Sun May 23 15:05:17 2021 +0200

    Protect against overly long strings
    
    Checking against upper limit of USHRT_MAX must happen before truncating
    size_t to int. On 64 bit systems with strings larger than 2 GB this
    could otherwise lead to negative ints or ints smaller than USHRT_MAX.
    
    In XParseColor this could lead to out of boundary access with strings
    starting with a # (color sequence). A modulo 12 operation is performed
    to validate the string length, but with an overflown length, the for
    loop would eventually read behind terminating '\0' character.
    
    Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>

commit ab2f59530b16bdfbf023b8e025c7c8aba3b6fd0c
Author: Matthieu Herrb <matthieu@herrb.eu>
Date:   Sun May 30 16:33:48 2021 +0200

    Check for NULL strings before getting their lengths
    
    Problem reported by Karsten Trulsen
    
    Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>

commit a8216e8653a246db664e1443ecf707b27de65067
Author: Matthieu Herrb <matthieu@herrb.eu>
Date:   Sat May 22 17:35:47 2021 +0200

    include <limits.h> always, not if HAVE_CONFIG_H is set.
    
    via Matthew Green from the NetBSD project
    
    Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>

commit 6953a586df4819143c4d55e011b3a5e5377981b8
Author: Matthieu Herrb <matthieu.herrb@laas.fr>
Date:   Tue May 18 15:27:58 2021 +0200

    Version 1.7.1
    
    Release notes in README.md, version bump in configure.ac

commit 8d2e02ae650f00c4a53deb625211a0527126c605
Author: Matthieu Herrb <matthieu@herrb.eu>
Date:   Fri Feb 19 15:30:39 2021 +0100

    Reject string longer than USHRT_MAX before sending them on the wire
    
    The X protocol uses CARD16 values to represent the length so
    this would overflow.
    
    CVE-2021-31535
    
    Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>

commit 838ea5a5a0267c25b20c095c9a70684edeeefba4
Author: Gaurav Ujjwal <gujjwal00@gmail.com>
Date:   Sun May 9 05:04:36 2021 +0000

    Fix out-of-bound access in KeySymToUcs4()
    
    Array `keysym_to_unicode_590_5fe` is only valid for range  [0x590, 0x5fe] but current lower-bound is checked against 0x589.
    
    So invalid values from 0x58a to 0x58f are being allowed by current check.
    
    If any of these invalid value is passed as `keysym`,    `keysym - 0x590` would underflow.
    
    Signed-off-by: Gaurav Ujjwal <gujjwal00@gmail.com>

commit 32491b02c76ac22f99dc433a32466e22bdc181a7
Author: Christopher Chavez <chrischavez@gmx.us>
Date:   Mon May 3 15:46:44 2021 +0000

    Xlib.h: spelling fix in comment

commit 5faa8dc0b364f55f19034c370436074646d9ad54
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Tue Nov 24 18:54:24 2020 +0100

    nls: adjust three comments about the APL compose sequences
    
    Commit 0bbc0d5e605e (from eight years ago) removed the lines that two
    of these comments referred to.  Without those lines, the comments don't
    make sense any more.  Reword and shorten them.
    
    Also reword a comment about two sequences that don't work.
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit b126bfd7fe990b8c1df088f55c31d9b3fd440cde
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Tue Nov 24 12:23:32 2020 +0100

    nls: allow composing all breved letters also with a lowercase "u"
    
    The letters ă and ŭ can already be composed with "u a" and "u u", but
    ĕ, ğ, ĭ, and ŏ can be composed only with an uppercase U.  Emancipate
    the latter four and understand also a lowercase "u" to mean 'breve'.
    
    (Yesterday I needed ğ and was annoyed that "u g" did not work.)
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 78027fdb7aa07621a3b7cdf37050bae39012f2fb
Author: Walter Harms <wharms@bfs.de>
Date:   Sat Nov 28 21:05:33 2020 +0100

    fix same roff code
    
    Signed-off-by: Walter Harms <wharms@bfs.de>

commit 4f15cfc64548098fef3ddd24f7359b76cf1bbda7
Author: Walter Harms <wharms@bfs.de>
Date:   Sat Nov 28 20:56:35 2020 +0100

    Fix some roff code add see also
    
    Signed-off-by: Walter Harms <wharms@bfs.de>

commit daa106927f78e6c5c9c36558a4b951d7cb58a8d1
Author: Walter Harms <wharms@bfs.de>
Date:   Sat Nov 28 17:49:25 2020 +0100

    fix broken nroff coding for code comments
    
    the comments /* */ are code as /\(**  */ that does not work.
    the coding in other X11 man pages is /\&* */ so we do the same here.

commit 7bdeae239b17db002964ac73d06f43f216d1cf86
Author: Walter Harms <wharms@bfs.de>
Date:   Fri Nov 27 22:43:21 2020 +0100

    FIX: warning: macro `hN' not defined
    
    Signed-off-by: Walter Harms <wharms@bfs.de>

commit b7ec67d3ea78ab68857328d8f72d923324e68cc2
Author: Walter Harms <wharms@bfs.de>
Date:   Fri Nov 27 22:26:15 2020 +0100

    FIX: warning: macro `IN' not defined
    
    just remove an other dead macro use.

commit 7ca3ceb9175a829a40c347cb3b2e98341ec5a2df
Author: Walter Harms <wharms@bfs.de>
Date:   Fri Nov 27 21:58:04 2020 +0100

    fix warning: macro `s' not defined
    
    this is caused by bad nroff coding, fix some more issues on the fly

commit 14fb4e535626ba934cad5bc4308f511524cd1103
Author: Walter Harms <wharms@bfs.de>
Date:   Fri Nov 27 20:04:22 2020 +0100

    FIX: warning: macro `hN' not defined
    
    this was found by checking man pages with
     groff -t -mandoc -Z  -wmac -Tutf8 $FILE >/dev/null
    
    In most cases .hN could be replaced with .BR
    
    Signed-off-by: Walter Harms <wharms@bfs.de>

commit cb03da4447aa53e8e5382f124917d89b50148036
Author: Walter Harms <wharms@bfs.de>
Date:   Fri Nov 27 19:00:00 2020 +0100

    FIX: warning: macro `Pn' not defined
    
    The missing macro is found via:
    roff -t -mandoc -Z  -wmac -Tutf8 XAnyEvent.man >/dev/null
    
    To fix the problem the macro is replaced with .RB.
    
    Signed-off-by: Walter Harms <wharms@bfs.de>

commit cc9f8878f2cbe17c7b4035b4ff4352b52ece38e0
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Wed Nov 25 16:58:27 2020 +0100

    nls: add 'C.utf8' as an alias for 'en_US.UTF-8'
    
    The normal form is 'C.UTF-8', but 'C.utf8' has been seen in the wild.
    
    Fixes #102.
    
    Reported-by: Tomas Korbar
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit ca8115186f810eccb7d86b0979980eff3ba95f0b
Author: Keith Packard <keithp@keithp.com>
Date:   Thu Nov 19 11:30:41 2020 -0800

    Version 1.7.0
    
    Release notes in README.md, version bump in configure.ac
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

commit 325ac177fb6d38f4c7689d9ce059792eaef388ef
Author: Keith Packard <keithp@keithp.com>
Date:   Mon Nov 16 15:48:40 2020 -0800

    Update libX11 .so version to 6.4.0
    
    There have been API additions since the previous release, so the
    .so version needs to change.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

commit 103e2e11519984aa5746c06e7d90d1f5bc8174a3
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Oct 31 09:24:01 2020 -0700

    Don't leave dangling pointers in Free functions
    
    While these are mostly called during teardown of larger structures
    that are about to themselves be freed, there's no guarantee that
    will always be the case, so try to be safer here.
    
    [ This bug was found by the Parfait 4.0 bug checking tool.
      http://labs.oracle.com/pls/apex/f?p=labs:49:::::P49_PROJECT_ID:13 ]
    
    v2: Deduplicate & simplify pointer clearing in _XFreeEventCookies
        as suggested by @keithp
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 7d70e302218e2ec8518548ddcdc02d828e7889af
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Oct 31 08:56:34 2020 -0700

    XimProto.h: wrap XIM_HEADER_SIZE definition in parens
    
    Resolves parfait warning of potential macro misinterpretation if
    expanded in the midst of other arithmetic operations with higher
    precedence.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit a3c0b5dbd6b12ae64bc78b11795647a7f6df0c7a
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Nov 17 13:15:18 2020 -0800

    Copy locale modifiers when creating XimInstCallback [v2]
    
    Locale modifiers may be freed whenever XSetLocaleModifiers gets
    called, even if the locale hasn't changed. This means that we cannot
    save a pointer to those modifiers in the XimInstCallback record and
    must, instead, make a copy of them instead.
    
    This fixes a problem uncovered when running wish under libasan as
    follows (on current Debian unstable):
    
            $ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.6 wish
    
    Reported-by: Vittorio Zecca <zeccav@gmail.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    
    v2:
            Remove incorrect 'else' token found by @alanc

commit 960e2e0cfac12c3477c672d0d40818a0dc74aca5
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Nov 16 09:34:57 2020 +1000

    gitlab CI: add a basic build test
    
    Using Arch as base distribution here because we can expect our dependencies to
    be up-to-date. We rely on the Arch for our dependencies rather than building
    those from git (notably: xorg-macros, xtrans and libxcb).
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit dbb55e1a5e82870466b095097d9e46046680ec25
Author: Frediano Ziglio <fziglio@redhat.com>
Date:   Wed Jan 29 09:06:54 2020 +0000

    Fix poll_for_response race condition
    
    In poll_for_response is it possible that event replies are skipped
    and a more up to date message reply is returned.
    This will cause next poll_for_event call to fail aborting the program.
    
    This was proved using some slow ssh tunnel or using some program
    to slow down server replies (I used a combination of xtrace and strace).
    
    How the race happens:
    - program enters into poll_for_response;
    - poll_for_event is called but the server didn't still send the reply;
    - pending_requests is not NULL because we send a request (see call
      to  append_pending_request in _XSend);
    - xcb_poll_for_reply64 is called from poll_for_response;
    - xcb_poll_for_reply64 will read from server, at this point
      server reply with an event (say sequence N) and the reply to our
      last request (say sequence N+1);
    - xcb_poll_for_reply64 returns the reply for the request we asked;
    - last_request_read is set to N+1 sequence in poll_for_response;
    - poll_for_response returns the response to the request;
    - poll_for_event is called (for instance from another poll_for_response);
    - event with sequence N is retrieved;
    - the N sequence is widen, however, as the "new" number computed from
      last_request_read is less than N the number is widened to N + 2^32
      (assuming last_request_read is still contained in 32 bit);
    - poll_for_event enters the nested if statement as req is NULL;
    - we compare the widen N (which now does not fit into 32 bit) with
      request (which fits into 32 bit) hitting the throw_thread_fail_assert.
    
    To avoid the race condition and to avoid the sequence to go back
    I check again for new events after getting the response and
    return this last event if present saving the reply to return it
    later.
    
    To test the race and the fix it's helpful to add a delay (I used a
    "usleep(5000)") before calling xcb_poll_for_reply64.
    
    Original patch written by Frediano Ziglio, see
    https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/34
    
    Reworked primarily for readability by Peter Hutterer, see
    https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/53
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

commit 30ccef3a48029bf4fc31d4abda2d2778d0ad6277
Author: Keith Packard <keithp@keithp.com>
Date:   Sat Nov 7 22:22:47 2020 -0800

    Avoid recursing through _XError due to sequence adjustment
    
    This patch is based on research done by Dmitry Osipenko to uncover the
    cause of a large class of Xlib lockups.
    
    _XError must unlock and re-lock the display around the call to the
    user error handler function. When re-locking the display, two
    functions are called to ensure that the display is ready to generate a request:
    
        _XIDHandler(dpy);
        _XSeqSyncFunction(dpy);
    
    The first ensures that there is at least one XID available to use
    (possibly calling _xcb_generate_id to do so). The second makes sure a
    reply is received at least every 65535 requests to keep sequence
    numbers in sync (possibly generating a GetInputFocus request and
    synchronously awaiting the reply).
    
    If the second of these does generate a GetInputFocus request and wait
    for the reply, then a pending error will cause recursion into _XError,
    which deadlocks the display.
    
    One seemingly easy fix is to have _XError avoid those calls by
    invoking InternalLockDisplay instead of LockDisplay. That function
    does everything that LockDisplay does *except* call those final two
    functions which may end up receiving an error.
    
    However, that doesn't protect the system from applications which call
    some legal Xlib function from within their error handler. Any Xlib
    function which cannot generate protocol or wait for events is valid,
    including many which invoke LockDisplay.
    
    What we need to do is make LockDisplay skip these two function calls
    precisely when it is called from within the _XError context for the
    same display.
    
    This patch accomplishes this by creating a list of threads in the
    display which are in _XError, and then having LockDisplay check the
    current thread against those list elements.
    
    Inspired-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Tested-by: Dmitry Osipenko <digetx@gmail.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>

commit c9c4d6efbf92ab51695e2e740319503221d68eed
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Fri Nov 13 11:34:04 2020 +0100

    nls: improve the comments for the Serbian compose sequences
    
    Also put an extra space before the lone combining characters
    so they have some room to breathe.
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 3497dae3d9c52a252110b2a0983b82000be0fe8e
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Fri Nov 13 11:23:09 2020 +0100

    nls: remove mistaken Serbian compose sequences with combining diacritics
    
    Combining characters are not dead keys -- they have an immediate effect
    and combine with the preceding character.  So they cannot be used in
    compose sequences.
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 5cd60398b7787297008b13a848ed3cfbd7ef178d
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Mon Nov 2 16:34:39 2020 +0100

    nls: rename the obsolete sr_CS locale to sr_RS
    
    Fixes #107, for the most part.
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 7cf1729590534e257b851899cf03421b65c538e3
Author: Keith Packard <keithp@keithp.com>
Date:   Sat Nov 7 17:02:56 2020 -0800

    Don't attempt to unload locale context data
    
    Most locale context users call _XlcCurrentLC, which returns a pointer
    which never needs to be passed to _XCloseLC, meaning it has unbounded
    lifetime, so that locale data can never be freed.
    
    Remove all reference counting and just leave all locales that were
    ever used in memory.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Acked-by: Martin Peres <martin.peres@mupuf.org>

commit 87a8fd8051b823636c3c4f3c37c4cfd11fdb880d
Author: Jacek Caban <jacek@codeweavers.com>
Date:   Mon Aug 14 19:20:19 2017 +0200

    Don't cache last lcd in _XlcCurrentLC.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=55678
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=68538
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=69088
    
    The way it's currently cached is not thread safe. As long as locale doesn't change, the same object is reused anyway.
    
    Signed-off-by: Jacek Caban <jacek@codeweavers.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Acked-by: Martin Peres <martin.peres@mupuf.org>

commit 7a38c09b82ee2522d987c3da4af8af186e562c61
Author: Keith Packard <keithp@keithp.com>
Date:   Sat Nov 7 16:59:37 2020 -0800

    Don't cache converters in _Xlcmbtowc and Xlcwctomb
    
    These functions were caching encoding conversion functions in static
    variables which is not thread safe. Let the conversion loader do its
    job and cache locale to converters there. It's less efficient, but
    it's also (now) thread safe.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Acked-by: Martin Peres <martin.peres@mupuf.org>

commit b52ba5c209165fc2c533b77b86147b31763299f3
Author: Jacek Caban <jacek@codeweavers.com>
Date:   Mon Aug 14 19:20:20 2017 +0200

    Make conv_list thread safe.
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=55678
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=68538
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=69088
    Signed-off-by: Jacek Caban <jacek@codeweavers.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Acked-by: Martin Peres <martin.peres@mupuf.org>

commit 8b5ce3a9b1219c81711944880e5a1e1cfad3d956
Author: Antti Savolainen <antti.savo@gmail.com>
Date:   Wed Sep 16 07:47:26 2020 +0000

    Added DOWNWARD ARROW support

commit 7138826dccba9d538dfb142ce9af1a40d64ea849
Author: Antti Savolainen <antti.savo@gmail.com>
Date:   Tue Sep 8 00:54:23 2020 +0300

    Added support for UPWARDS ARROW and ALMOST EQUAL TO
    
    Signed-off-by: Antti Savolainen <antti.savo@gmail.com>

commit 56d59299f7433cdeb88bac970b06eb7df44df5bb
Author: Jonathan Belsewir <jonbel@jonasund.de>
Date:   Thu Nov 5 22:57:50 2020 +0000

    Add less and greater to characters that are difficult to access on some keyboards

commit 5caf45f8d3bebad5b72ac88545adc156ccfd754d
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Fri Oct 23 17:12:22 2020 +0200

    nls: Allow all letters with a caron to be composed also with v.
    
    It was strange that the accented letters Ž and ž can be composed with
    sequences that start with "v" ("v Z" and "v z"), but not Č and č and
    Š and š (and other letters with a caron).  For these letters, compose
    sequences that start with a "c" had to be used, which was frustrating
    because it is hard to remember that "c" stands for "caron", AND the
    graphically more obvious "v" is right next to it.
    
    (Unfortunately, the sequence "v l" is already taken for vertical line.
    Maybe the compose sequences for vertical line could be reduced to just
    "V L" and "L V"?)
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 62de4ac9025e2cb3f62a890241c06ebc75acce62
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sun Nov 1 20:23:55 2020 +0100

    nls: vertically align the target column of aliases
    
    Also improve the grammar of the initial comment.
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit f5b26a16ef959fc6860e9cf58b97a042600900b4
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sun Nov 1 20:17:05 2020 +0100

    nls: remove some twenty aliases that have been obsolete for fifteen years
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 3e61f3b49660e081108f06bc514366f1784cb2e0
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sun Nov 1 19:50:56 2020 +0100

    nls: remove country-specific aliases for two constructed languages
    
    These artificial languages are meant to be international and are
    thus not specific to any country.  If one would want to support
    aliases like ia_FR or ia_CH, then one would also have to support
    ia_AU, ia_DE, ia_ES, et cetera, et cetera.  That would be silly.
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 3f9c43adde22bb2ab4bef5837bc8401af9bb537c
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Sun Nov 1 17:28:24 2020 +0100

    nls: remove four aliases where the name is identical to the definition
    
    They were found with:
    
        while read one two; do
            if [[ $one == $two: ]]; then echo $two; fi;
        done  <nls/locale.alias.pre
    
    Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>

commit 9f9c5365816bdd036fd80d54b22e86764ea4b7a7
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Fri Jun 14 17:55:14 2019 +0200

    Add XSetIOErrorExitHandler() function
    
    This function complements XSetIOErrorHandler(), allowing to override
    the default behavior that trusts on I/O errors never coming back
    (i.e. exit()ing the process).
    
    This is meant as a mechanism for Wayland compositors (that are too
    a X11 client + compositing manager) to unfasten seatbelts and jump
    through the car window. It might get lucky and land on a stack of
    pillows.
    
    In consequence, some functions labeled as _X_NORETURN can as a
    matter of fact return. So those hints were removed.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
    Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>

commit 4cb758019e374fa7c022fe79d28444e13441717b
Author: Carlos Garnacho <carlosg@gnome.org>
Date:   Fri Jun 14 17:54:47 2019 +0200

    Prepare for _XIOError() possibly returning
    
    Ensure current state is cut short on _XIOError(), possible reentrancy
    should be skipped through the XlibDisplayIOError flag checks.
    
    Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
    Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>

commit a37986f7a7d4ae9b8292b132dbb0da2885ea919c
Author: Ross Burton <ross.burton@intel.com>
Date:   Wed Jan 22 17:11:23 2020 +0000

    cpprules.in: squash whitespace in generated files
    
    CPP is used to generate files, but as cpp reads files from the build host the
    output has a number of blank lines at the beginning which varies depending on
    what GCC and friends is used.
    
    Pathalogical example:
    
     $ cpp -undef -traditional /dev/null
     # 1 "/dev/null"
     # 1 "<built-in>"
     # 1 "<command-line>"
     # 31 "<command-line>"
     # 1 "/usr/include/stdc-predef.h" 1 3 4
    
     # 17 "/usr/include/stdc-predef.h" 3 4
    
     [ 40 blank line ]
    
     # 32 "<command-line>" 2
     # 1 "/dev/null"
    
    So depending on the content of stdc-predef.h and what other headers CPP will
    load, the amount of whitespace in the generates files varies. This can result in
    differences in reproducible environments, and file conflicts in multilib
    environments.
    
    As whitespace is irrelevant to these machine-readable files, extend the sed to
    just delete blank lines.

commit 16192ce2a7e462e09f95aa45ce9eaa180e483c43
Author: Carmina16 <mistresssilvara@hotmail.com>
Date:   Sun Jun 16 02:54:25 2019 +0000

    Adding ia and ie locales

commit caa71668af7fd3ebdd56353c8f0ab90824773969
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Mon Sep 28 16:16:07 2020 -0700

    Use __builtin_popcountl if available to replace Ones() in GetImage.c
    
    If the compiler knows of a better algorithm for counting the number of
    bits set in a word for the target CPU, let it use that, instead of the
    classic algorithm optimized for PDP-6.
    
    Based on libXext commit 490a25e6f8a4d2482af4364c700b68ad11a4d10b
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 1a9269a95c353e3de9f4d33bab9f1363d84e79db
Author: Krzesimir Nowak <qdlacz@gmail.com>
Date:   Mon Jun 1 12:58:30 2020 +0000

    Fix leaking modifiers string.
    
    Reported by valgrind:
    
    ```
    ==118175== 17 bytes in 1 blocks are definitely lost in loss record 13 of 1,675
    ==118175==    at 0x483A809: malloc (vg_replace_malloc.c:307)
    ==118175==    by 0x5CD1B46: _XlcDefaultMapModifiers (in /usr/lib64/libX11.so.6.3.0)
    ==118175==    by 0x5CD1F1A: XSetLocaleModifiers (in /usr/lib64/libX11.so.6.3.0)
    ==118175==    by 0x496841C: X11_InitKeyboard (SDL_x11keyboard.c:324)
    ==118175==    by 0x496F0CA: X11_VideoInit (SDL_x11video.c:455)
    ==118175==    by 0x494747B: SDL_VideoInit_REAL (SDL_video.c:532)
    ==118175==    by 0x489E886: SDL_InitSubSystem_REAL (SDL.c:206)
    ==118175==    by 0x402634: main (fade.cc:35)
    ```

commit d127217f26df1bf7566c1f372d8b5329a06754ea
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Aug 16 17:03:24 2020 -0700

    Exempt XLookupKeysym from XKeycodeToKeysym deprecation warnings
    
    Gets rid of:
    src/xkb/XKBBind.c: In function ‘XLookupKeysym’:
    src/xkb/XKBBind.c:234:5: warning: ‘XKeycodeToKeysym’ is deprecated
    [https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wdeprecated-declarations-Wdeprecated-declarations]
      234 |     return XKeycodeToKeysym(dpy, event->keycode, col);
          |     ^~~~~~
    src/xkb/XKBBind.c:96:1: note: declared here
       96 | XKeycodeToKeysym(Display *dpy,
          | ^~~~~~~~~~~~~~~~
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit a64eb5f478c6ca84ef3457a01f9a7c3db8ecf1e5
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Aug 16 16:50:43 2020 -0700

    lcUTF8: Increase string buffer size from 20 to 32 bytes
    
    While we don't expect large enough ints to need it, we don't
    enforce a maximum size, so gcc assumes the worst and warns:
    
    ../../../src/xlibi18n/lcUTF8.c: In function ‘create_tofontcs_conv’:
    ../../../src/xlibi18n/lcUTF8.c:1736:34: warning: ‘.charset.name’ directive output may be truncated writing 13 bytes into a region of size between 8 and 17 [-Wformat-truncation=]
     1736 |  snprintf(buf, sizeof(buf), "fs%d.charset.name", i);
          |                                  ^~~~~~~~~~~~~
    ../../../src/xlibi18n/lcUTF8.c:1736:2: note: ‘snprintf’ output between 17 and 26 bytes into a destination of size 20
     1736 |  snprintf(buf, sizeof(buf), "fs%d.charset.name", i);
          |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../../src/xlibi18n/lcUTF8.c:1739:46: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
     1739 |      snprintf(buf, sizeof(buf), "fs%d.charset", i);
          |                                              ^
    ../../../src/xlibi18n/lcUTF8.c:1739:6: note: ‘snprintf’ output between 12 and 21 bytes into a destination of size 20
     1739 |      snprintf(buf, sizeof(buf), "fs%d.charset", i);
          |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../../src/xlibi18n/lcUTF8.c:1754:41: warning: ‘.charset.name’ directive output may be truncated writing 13 bytes into a region of size between 8 and 17 [-Wformat-truncation=]
     1754 |         snprintf(buf, sizeof(buf), "fs%d.charset.name", i);
          |                                         ^~~~~~~~~~~~~
    ../../../src/xlibi18n/lcUTF8.c:1754:9: note: ‘snprintf’ output between 17 and 26 bytes into a destination of size 20
     1754 |         snprintf(buf, sizeof(buf), "fs%d.charset.name", i);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../../src/xlibi18n/lcUTF8.c:1757:53: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
     1757 |             snprintf(buf, sizeof(buf), "fs%d.charset", i);
          |                                                     ^
    ../../../src/xlibi18n/lcUTF8.c:1757:13: note: ‘snprintf’ output between 12 and 21 bytes into a destination of size 20
     1757 |             snprintf(buf, sizeof(buf), "fs%d.charset", i);
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 54925250ad9c825bea671dcade5c913bad88abee
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Aug 16 16:33:59 2020 -0700

    i18n: use memcpy instead of strncpy on unterminated char arrays
    
    Avoids gcc warnings that we're using strncpy wrong to copy a known-length
    set of characters without a terminating '\0' to a buffer whose length we
    are checking separately.  (Should also be imperceptibly faster since we
    no longer check if each byte is '\0' when we already know it won't be.)
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 8754868dbbbc5fa096282df0504aa7880488eeb9
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Aug 16 16:02:01 2020 -0700

    Mark FreeBlueTblElements label unused in LRGB.c
    
    Quiets gcc 10.2 warning of:
    src/xcms/LRGB.c: In function ‘LINEAR_RGB_InitSCCData’:
    src/xcms/LRGB.c:798:1: warning: label ‘FreeBlueTblElements’ defined
     but not used
    [https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-label-Wunused-label]
      798 | FreeBlueTblElements:
          | ^~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 52b0cd67073f2f4665884b5a7decfedeb3b7ca1e
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Aug 16 14:54:47 2020 -0700

    Raise minimum required xproto version to 7.0.25 (released 2013-11-23)
    
    Allows us to depend on _X_COLD directly instead of having to check for it.
    
    (Since we also use _X_UNUSED, 7.0.22 or later was implicitly required
     already but not checked for.)
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit deafb99fd8faf8b044eaee13d072440ce4db76af
Author: Maya Rashish <maya@NetBSD.org>
Date:   Sun Aug 23 21:19:33 2020 +0300

    Avoid the use of "register" keyword in public headers.
    
    This causes issues when compiling code for C++17.

commit 505420662577749e36640db48f6b6b9ae0236e09
Author: Matthieu Herrb <matthieu@herrb.eu>
Date:   Mon Aug 24 15:42:25 2020 +0200

    libX11 1.6.12
    
    Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>

commit acdaaadcb3d85c61fd43669fc5dddf0f8c3f911d
Author: Matthieu Herrb <matthieu@herrb.eu>
Date:   Thu Aug 13 18:02:58 2020 +0200

    Fix an integer overflow in init_om()
    
    CVE-2020-14363
    
    This can lead to a double free later, as reported by Jayden Rivers.
    
    Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>

commit d15c24c8b44be5e4054c8ecd0ff9dcf2c8e18e5b
Author: Niclas Zeising <zeising@daemonic.se>
Date:   Tue Aug 11 13:44:38 2020 +0200

    Fix input clients connecting to server
    
    Fix a bug where some input clients can't connect to the input server.
    This fixes #117.
    
    FreeBSD bugzilla reference:
    https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248549
    
    Signed-off-by: Niclas Zeising <zeising@daemonic.se>

commit 6dd618e5ea8e7558dd8e99a2777ab7b69211789c
Author: Maya Rashish <maya@NetBSD.org>
Date:   Sat Aug 15 00:48:56 2020 +0300

    Avoid the use of "register" keyword in XkbTranslateKeySym.
    
    This causes issues when compiling code for C++17.
    While here, make function prototype match the header with regards
    to removal of another register keyword.

commit 780d222343098b4bfe3ec529b4a0dc2aadea19bf
Author: Christopher Chavez <chrischavez@gmx.us>
Date:   Mon Aug 10 17:08:39 2020 +0000

    Fix typo GCCLipYOrigin -> GCClipYOrigin in XCreateGC() manpage

commit 29a8251a456bb7dc10146b4713f499a624d6dacd
Author: Felix Yan <felixonmars@archlinux.org>
Date:   Thu Aug 6 16:03:38 2020 +0000

    Correct a typo in GetStCmap.c

commit 0d8f038db83f68724a84ef9d4ccd0d5e33ec6a70
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Thu Aug 6 08:07:57 2020 -0700

    libX11 1.6.11
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 93fce3f4e79cbc737d6468a4f68ba3de1b83953b
Author: Yichao Yu <yyc1992@gmail.com>
Date:   Sun Aug 2 13:43:58 2020 -0400

    Fix size calculation in `_XimAttributeToValue`.
    
    The check here guards the read below.
