Timo Aaltonen pushed to branch debian-unstable at X Strike Force / lib / libx11


Commits:
deafb99f by Maya Rashish at 2020-08-28T20:28:18+00:00
Avoid the use of "register" keyword in public headers.

This causes issues when compiling code for C++17.

- - - - -
52b0cd67 by Alan Coopersmith at 2020-08-28T20:29:27+00:00
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.coopersm...@oracle.com>

- - - - -
8754868d by Alan Coopersmith at 2020-08-28T20:29:27+00:00
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.coopersm...@oracle.com>

- - - - -
54925250 by Alan Coopersmith at 2020-08-28T20:29:27+00:00
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.coopersm...@oracle.com>

- - - - -
a64eb5f4 by Alan Coopersmith at 2020-08-28T20:29:27+00:00
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.coopersm...@oracle.com>

- - - - -
d127217f by Alan Coopersmith at 2020-08-28T20:29:27+00:00
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.coopersm...@oracle.com>

- - - - -
1a9269a9 by Krzesimir Nowak at 2020-09-21T19:37:33+00:00
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)
```

- - - - -
caa71668 by Alan Coopersmith at 2020-09-28T16:16:07-07:00
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.coopersm...@oracle.com>

- - - - -
16192ce2 by Carmina16 at 2020-10-10T14:32:51-07:00
Adding ia and ie locales

- - - - -
a37986f7 by Ross Burton at 2020-10-10T21:35:04+00:00
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.

- - - - -
4cb75801 by Carlos Garnacho at 2020-10-15T11:14:41+02:00
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 <carl...@gnome.org>
Reviewed-by: Michel Dänzer <mdaen...@redhat.com>

- - - - -
9f9c5365 by Carlos Garnacho at 2020-10-15T11:14:53+02:00
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 <carl...@gnome.org>
Reviewed-by: Michel Dänzer <mdaen...@redhat.com>

- - - - -
3f9c43ad by Benno Schulenberg at 2020-11-01T19:55:57+01:00
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 <bensb...@telfort.nl>

- - - - -
3e61f3b4 by Benno Schulenberg at 2020-11-01T19:56:22+01:00
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 <bensb...@telfort.nl>

- - - - -
f5b26a16 by Benno Schulenberg at 2020-11-01T20:18:30+01:00
nls: remove some twenty aliases that have been obsolete for fifteen years

Signed-off-by: Benno Schulenberg <bensb...@telfort.nl>

- - - - -
62de4ac9 by Benno Schulenberg at 2020-11-01T20:32:08+01:00
nls: vertically align the target column of aliases

Also improve the grammar of the initial comment.

Signed-off-by: Benno Schulenberg <bensb...@telfort.nl>

- - - - -
5caf45f8 by Benno Schulenberg at 2020-11-05T22:55:07+00:00
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 <bensb...@telfort.nl>

- - - - -
56d59299 by Jonathan Belsewir at 2020-11-05T22:57:50+00:00
Add less and greater to characters that are difficult to access on some 
keyboards

- - - - -
7138826d by Antti Savolainen at 2020-11-08T01:32:21+00:00
Added support for UPWARDS ARROW and ALMOST EQUAL TO

Signed-off-by: Antti Savolainen <antti.s...@gmail.com>

- - - - -
8b5ce3a9 by Antti Savolainen at 2020-11-08T01:32:21+00:00
Added DOWNWARD ARROW support
- - - - -
b52ba5c2 by Jacek Caban at 2020-11-09T08:47:35-08:00
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 <ja...@codeweavers.com>
Signed-off-by: Keith Packard <kei...@keithp.com>
Acked-by: Martin Peres <martin.pe...@mupuf.org>

- - - - -
7a38c09b by Keith Packard at 2020-11-09T08:47:35-08:00
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 <kei...@keithp.com>
Acked-by: Martin Peres <martin.pe...@mupuf.org>

- - - - -
87a8fd80 by Jacek Caban at 2020-11-09T08:47:35-08:00
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 <ja...@codeweavers.com>
Signed-off-by: Keith Packard <kei...@keithp.com>
Acked-by: Martin Peres <martin.pe...@mupuf.org>

- - - - -
7cf17295 by Keith Packard at 2020-11-09T08:47:35-08:00
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 <kei...@keithp.com>
Acked-by: Martin Peres <martin.pe...@mupuf.org>

- - - - -
5cd60398 by Benno Schulenberg at 2020-11-13T17:01:02+00:00
nls: rename the obsolete sr_CS locale to sr_RS

Fixes #107, for the most part.

Signed-off-by: Benno Schulenberg <bensb...@telfort.nl>

- - - - -
3497dae3 by Benno Schulenberg at 2020-11-13T17:01:02+00:00
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 <bensb...@telfort.nl>

- - - - -
c9c4d6ef by Benno Schulenberg at 2020-11-13T17:01:02+00:00
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 <bensb...@telfort.nl>

- - - - -
30ccef3a by Keith Packard at 2020-11-15T10:09:16-08:00
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 <dig...@gmail.com>
Signed-off-by: Keith Packard <kei...@keithp.com>
Tested-by: Dmitry Osipenko <dig...@gmail.com>
Reviewed-by: Dmitry Osipenko <dig...@gmail.com>

- - - - -
dbb55e1a by Frediano Ziglio at 2020-11-16T00:02:37+00:00
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.hutte...@who-t.net>

- - - - -
960e2e0c by Peter Hutterer at 2020-11-16T23:28:15+00:00
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.hutte...@who-t.net>

- - - - -
a3c0b5db by Keith Packard at 2020-11-17T14:42:25-08:00
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 <zec...@gmail.com>
Signed-off-by: Keith Packard <kei...@keithp.com>

v2:
        Remove incorrect 'else' token found by @alanc

- - - - -
7d70e302 by Alan Coopersmith at 2020-11-18T14:27:59-08:00
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.coopersm...@oracle.com>

- - - - -
103e2e11 by Alan Coopersmith at 2020-11-18T14:27:59-08:00
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.coopersm...@oracle.com>

- - - - -
325ac177 by Keith Packard at 2020-11-18T22:53:18+00:00
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 <kei...@keithp.com>

- - - - -
ca811518 by Keith Packard at 2020-11-19T11:31:09-08:00
Version 1.7.0

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

Signed-off-by: Keith Packard <kei...@keithp.com>

- - - - -
1c9eb5e7 by Timo Aaltonen at 2020-12-01T16:48:47+02:00
Merge branch 'upstream-unstable' into debian-unstable

- - - - -
ef924d58 by Timo Aaltonen at 2020-12-01T16:58:45+02:00
bump the version

- - - - -
e618050f by Timo Aaltonen at 2020-12-01T17:31:29+02:00
patches: Refreshed.

- - - - -
5119167f by Timo Aaltonen at 2020-12-01T23:49:45+02:00
signing-key: Added key from Keith Packard.

- - - - -
0db67d85 by Timo Aaltonen at 2021-01-06T20:24:56+02:00
symbols: Updated.

- - - - -
a650a288 by Timo Aaltonen at 2021-01-06T20:48:07+02:00
release to sid

- - - - -


30 changed files:

- + .gitlab-ci.yml
- README.md
- configure.ac
- cpprules.in
- debian/changelog
- debian/libx11-6.symbols
- debian/patches/003_recognize_glibc_2.3.2_locale_names.diff
- debian/patches/009_remove_th_Compose.diff
- debian/patches/015_russian_locale_alias.diff
- debian/upstream/signing-key.asc
- include/X11/ImUtil.h
- include/X11/Xlib.h
- include/X11/Xlibint.h
- + m4/ax_gcc_builtin.m4
- man/XSetErrorHandler.man
- modules/im/ximcp/imDefIm.c
- modules/im/ximcp/imInsClbk.c
- modules/im/ximcp/imTrX.c
- modules/im/ximcp/imTrans.c
- modules/lc/gen/lcGenConv.c
- nls/compose.dir.pre
- nls/en_US.UTF-8/Compose.pre
- nls/locale.alias.pre
- nls/locale.dir.pre
- nls/sr_CS.UTF-8/Compose.pre → nls/sr_RS.UTF-8/Compose.pre
- nls/sr_CS.UTF-8/XI18N_OBJS → nls/sr_RS.UTF-8/XI18N_OBJS
- nls/sr_CS.UTF-8/XLC_LOCALE.pre → nls/sr_RS.UTF-8/XLC_LOCALE.pre
- src/Context.c
- src/ErrHndlr.c
- src/GetImage.c


The diff was not included because it is too large.


View it on GitLab: 
https://salsa.debian.org/xorg-team/lib/libx11/-/compare/20a5a38a6dec42373ff1171c5e2c993e947260b1...a650a288591048cf28b16bb80487b88ef27a7468

-- 
View it on GitLab: 
https://salsa.debian.org/xorg-team/lib/libx11/-/compare/20a5a38a6dec42373ff1171c5e2c993e947260b1...a650a288591048cf28b16bb80487b88ef27a7468
You're receiving this email because of your account on salsa.debian.org.


Reply via email to