Commit graph

1627 commits

Author SHA1 Message Date
Benno Schulenberg
078cc39f05 nls: delete 88 compose sequences that have the accents in the wrong order
The various compose sequences with the accents in their proper order
(the highest placed accent first) continue to exist.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2023-01-07 17:12:22 +00:00
Benno Schulenberg
aa5ef0ba80 nls: move the compose sequences for Ș and Ț to the fitting Unicode block
This addresses a side note of issue #166.

Reported-by: J. McWilliams

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2023-01-07 17:12:22 +00:00
Alan Coopersmith
82c25879b7 xlibi18n: Update Imake instructions to autoconf equivalent in comments
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2023-01-07 16:59:47 +00:00
Yuxuan Shui
88399e01be Revert "Update XPutBackEvent() to support clients that put back unpadded events"
This reverts commit d6d6cba902.

The reverted commit intended to fix the problem where an unpadded X
event struct is passed into XPutBackEvent, by creating a padded struct
with _XEventToWire and _XWireToEvent. However, _XWireToEvent updates the
last sequence number in Display, which may cause xlib to complain about
lost sequence numbers.

IMO, the problem that commit tried to solve is a bug in the client
library, and workaround it inside Xlib is bad practice, especially given
the problem it caused. Plus, the offender cited in the original commit
message, freeglut, has already fixed this problem.

Fixes: #176 #174

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2023-01-03 15:23:07 +00:00
Alan Coopersmith
48487c4b90
libX11 1.8.3
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-12-15 14:56:28 -08:00
Keith Packard
d6d6cba902
Update XPutBackEvent() to support clients that put back unpadded events
It seems to be common practice of some X11 clients to pass specific event
types into APIs that take XEvent*.  For example, freeglut does:

   XConfigureEvent fakeEvent = {0};
   ...
   XPutBackEvent(fgDisplay.Display, (XEvent*)&fakeEvent);

This can result in reads overflowing the input event when libX11 does:

   XEvent store = *event;

=================================================================
==75304==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x00016ee4a8e8 at pc 0x000101c54d14 bp 0x00016ee4a0d0 sp 0x00016ee49888
READ of size 192 at 0x00016ee4a8e8 thread T0
    #0 0x101c54d10 in __asan_memcpy+0x1a4 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x3cd10)
    #1 0x102848a18 in _XPutBackEvent PutBEvent.c:41
    #2 0x1028490a4 in XPutBackEvent PutBEvent.c:84
    #3 0x1013295c8 in fgOpenWindow freeglut_window.c:1178
    #4 0x101321984 in fgCreateWindow freeglut_structure.c:108
    #5 0x10132b138 in glutCreateWindow freeglut_window.c:1551
    #6 0x100fb7d94 in main+0x78 (checkeredTriangles:arm64+0x100003d94)
    #7 0x197de3e4c  (<unknown module>)

Address 0x00016ee4a8e8 is located in stack of thread T0 at offset 840 in frame
    #0 0x1013282f8 in fgOpenWindow freeglut_window.c:1063

  This frame has 8 object(s):
    [32, 40) 'title.addr'
    [64, 176) 'winAttr' (line 1066)
    [208, 240) 'textProperty' (line 1067)
    [272, 352) 'sizeHints' (line 1068)
    [384, 440) 'wmHints' (line 1069)
    [480, 672) 'eventReturnBuffer' (line 1070)
    [736, 740) 'num_FBConfigs' (line 1072)
    [752, 840) 'fakeEvent' (line 1074) <== Memory access at offset 840 overflows this variable

This change allows XPutBackEvent() to support such clients without
risk of memory read overflow.

Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Tested-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
2022-12-11 11:17:48 -08:00
Jeremy Huddleston Sequoia
496d9bfeed
ximcp: Address warning found by UBSan when growing an empty tree
imLcPrs.c:681:52: runtime error: applying zero offset to null pointer

Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
2022-12-10 23:15:47 -08:00
Takao Fujiwara
7f7bcd7b6f nls: consecutive cs number in en_US.UTF-8/XLC_LOCALE 2022-12-06 16:59:56 +00:00
Ulrich Sibiller
ba09596734 ChkIfEv.c: fix wrong handling of dpy->in_ifevent
Is no longer a bool but a counter.

Signed-off-by: Ulrich Sibiller <uli42@gmx.de>
2022-12-01 14:54:12 -08:00
Ulrich Sibiller
70eaf1174e Indentation fixes around recent dpy->in_ifevent changes
Use the same indentation as the surrounding code.

Signed-off-by: Ulrich Sibiller <uli42@gmx.de>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-12-01 14:53:06 -08:00
Matthieu Herrb
a9e845809b Fix 797755 Allow X*IfEvent() to reenter libX11
- the activation logic is reversed
- there is also _XInternalLockDisplay() that needs protection
- I've found cases (in fvwm2) where the callback calls XCheckIfEvent()
  recursively. So the flag needs to be a counter.

Reviewed-by: Adam Jackson <ajax@redhat.com>
2022-11-19 09:20:00 -08:00
Nia Alarie
bccd787a56 Don't use pragma inside a function, it breaks compiling with older GCCs.
XKBBind.c:230: error: #pragma GCC diagnostic not allowed inside functions

Signed-off-by: Thomas Klausner <wiz@gatalith.at>
2022-11-11 17:05:30 +00:00
Oliver
696d19d5db Add XFreeThreads function. 2022-11-11 17:04:00 +00:00
Alan Coopersmith
b4f24b272c
libX11 1.8.2
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-11-10 12:18:17 -08:00
Alan Coopersmith
77629ea5e7 README.md: Add 1.8.2 changes
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-11-07 20:11:28 +00:00
Alan Coopersmith
d1baf2ec48 Remove NEWS file which only covered 2006 & 2007 releases
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-11-07 20:11:28 +00:00
Po Lu
1294bfa487 specs: document change in XIMPreeditCallbacks
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-11-03 14:47:19 -07:00
Alan Coopersmith
1a7e54609c man pages: document XCloseIM frees its argument
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-11-03 14:44:22 -07:00
Alan Coopersmith
a04b84f0f7 Copyright & license cleanup 2022-11-03 20:31:31 +00:00
Benno Schulenberg
5e41119d96 nls: reshuffle a few compose sequences, to have similar ones together
It makes more sense to have similar sequences grouped together
than to rigidly follow the order of ascending Unicode codes.
2022-11-02 18:26:56 +00:00
Benno Schulenberg
65d89342f5 nls: remove two compose sequences that use deprecated symbols
The last few occurrences of `leftcaret` and `rightcaret` were replaced
with `less` and `greater` in xkeyboard-config half a year ago.
2022-11-02 18:26:56 +00:00
Benno Schulenberg
6baccbae53 nls: let <Multi_key> <minus> <underscore> compose U+2212 (MINUS SIGN)
There was not yet any way to compose the Unicode minus sign, U+2212.
2022-11-02 18:26:56 +00:00
Adam Jackson
7977557541 Allow X*IfEvent() to reenter libX11
The documentation for this family of functions very clearly says not to
call into xlib in your predicate function, but historically single
threaded apps could get away with it just fine, and now that we've
forced thread-safety on the world such apps will now deadlock instead.
That's not an acceptable regression even if the app is technically
broken. This has been reported with XFCE and FVWM, and Motif's
cut-and-paste code has the same bug by inspection, so this does need to
be addressed.

This change nerfs LockDisplay/UnlockDisplay while inside the critical
bit of an IfEvent function. This is still safe in the sense that the
display remains locked and no other thread should be able to change it
from under us, but the loop that scans the event queue might not be
robust against it being modified as a side effect of protocol emitted by
the predicate callback. But that's not new, non-XInitThreads'd xlib
would have the same caveat.

Closes: xorg/lib/libx11#157
2022-11-02 14:05:38 +00:00
Benno Schulenberg
0d1d65bdd9 nls: change <Compose> <^> <-> to mean superscript minus instead of macron
Several other `<Multi_key> <asciicircum> <symbol>` sequences
produce the superscript equivalent of the given symbol.  So,
let `<Multi_key> <asciicircum> <minus>` do the same.

Also, add two other sequences for producing a plain macron,
to compensate a bit the loss of the above sequence.

Additionally, make `<Multi_key> <underscore> <minus>` produce
a subscript minus, for consistency.

This fixes issue #165.

Requested-by: J. McWilliams

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-10-31 16:29:47 +01:00
Jan Tojnar
3108982707 nls: Map sr locales to sr_RS compose files
Serbian used sr_YU (Yugoslavia) code in the past.
Then it was succeeded by sr_CS (Serbia and Montenegro).
Finally, it was split into sr_RS (Serbia) and sr_ME (Montenegro).

da95ecbbdc
introduced the modern sr_RS and sr_ME codes.

Next, 4076189869
added the Serbian compose table but only for the legacy sr_CS entry.

5cd60398b7
removed the legacy sr_CS entry, the only one pointing to the correct compose file.
It also renamed the file to sr_RS, but did not update the compose mapping.

Let’s point all Serbian locales to the Compose file again.
2022-10-20 09:14:49 +02:00
Alan Coopersmith
a35d706cd8 COPYING: remove notice for the removed UIThrStubs.c
Fixes: 701e9e9a ("Use same pthread-stubs as libxcb")

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-10-14 20:55:27 +00:00
Benno Schulenberg
3b1750e982 nls: delete two compose sequences with an anomalous post-fixed breve
Two years ago, commit b126bfd7fe allowed using also a lowercase `u`
wherever an uppercase `U` was used to represent a breve.  But the
commit should have limited itself to only the prefixed uses of `U`,
as that is how most letters with a breve are composed.

Also, group the two compose sequences with an uppercase post-fixed `U`
together with the corresponding other post-fixed sequences.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-10-14 20:46:19 +00:00
Alan Coopersmith
701e9e9afb Use same pthread-stubs as libxcb
Avoid conflicts when libX11 calls libxcb and gets its pthread functions
overriding our ancient stubs.

v2: Keep linking with real threads libraries when thread safety
    constructor is enabled.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-10-08 13:00:52 -07:00
Thomas E. Dickey
1d11822601
fix a memory leak in XRegisterIMInstantiateCallback
Analysis:

    _XimRegisterIMInstantiateCallback() opens an XIM and closes it using
    the internal function pointers, but the internal close function does
    not free the pointer to the XIM (this would be done in XCloseIM()).

Report/patch:

    Date: Mon, 03 Oct 2022 18:47:32 +0800
    From: Po Lu <luangruo@yahoo.com>
    To: xorg-devel@lists.x.org
    Subject: Re: Yet another leak in Xlib

    For reference, here's how I'm calling XRegisterIMInstantiateCallback:

    XSetLocaleModifiers ("");
    XRegisterIMInstantiateCallback (compositor.display,
                                    XrmGetDatabase (compositor.display),
                                    (char *) compositor.resource_name,
                                    (char *) compositor.app_name,
                                    IMInstantiateCallback, NULL);

    and XMODIFIERS is:

        @im=ibus

Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
2022-10-04 19:03:48 -04:00
Alan Coopersmith
1f8fd7ff1c If thread-safety-constructor is enabled, link against pthreads not stubs
Only really makes a difference if pthreads is not in libc.

Fixes: #162

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2022-09-27 15:02:23 -07:00
Thomas E. Dickey
bfe5d2dd98 reduce compiler warnings with casts (no object change)
Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
2022-09-11 15:53:47 +00:00
Thomas E. Dickey
926f2454bc use casts to reduce compiler warnings (no object change)
Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
2022-09-11 15:53:47 +00:00
Mike FABIAN
dc553ff908 Remove KOI8-R character set from en_US.UTF-8/XLC_LOCALE
https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/xlibi18n/lcCT.c#L58
has no escape sequence for KOI8-R.
That makes Xutf8TextListToTextProperty() sometimes fail when trying to
convert to COMPOUND_TEXT and when the KOI8-R charset is tried.

This is the cause for this bug:

https://github.com/ibus/ibus/issues/2422

Removing the KOI8-R charset entry fixes the problem.

This commit also fixes a few wrong texts in comments.

Signed-off-by: Mike FABIAN <mfabian@redhat.com>
2022-09-10 19:30:13 +00:00
Adam Sampson
1c04ac5141 xkb: Fix off-by-one error in XKeycodeToKeysym
The code here that made indexes greater than 3 refer to XKB symbol
groups had an off-by-one error, so it would always leave out the symbol
that should have been at index 4. Rewrite the code to fix this and
simplify the logic a bit.

Signed-off-by: Adam Sampson <ats@offog.org>
2022-09-10 19:07:42 +00:00
Thomas E. Dickey
ddaacd2196
reduce compiler warnings for macros BufAlloc, Data and Data32 using casts
Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
2022-09-09 20:20:34 -04:00
Kirill Chibisov
62c3337d89 ximcp/imRm.c: allow XNSpotLocation with OnTheSpot 2022-09-08 22:50:30 +00:00
Alan Coopersmith
1272879074 gitlab CI: stop requiring Signed-off-by in commits
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-08-05 14:06:46 -07:00
David H. Gutteridge
38033b073f configure.ac: report thread safety constructor build status
Signed-off-by: David H. Gutteridge <david@gutteridge.ca>
2022-07-25 19:30:19 -04:00
Alan Coopersmith
9a90b3a63d doc: Document possible return values for XkbGetKeyboard()
Fixes: #160

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-07-15 22:35:49 +00:00
Alan Coopersmith
0beb0cf46a xkb: set num_keys when filling in keys in _XkbReadGetNamesReply()
Fixes: #160

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2022-07-15 22:35:49 +00:00
Jon Turney
487e9489d1 Fix Win32 build with -fno-common
/work/xorg/lib/libX11/src/XlibInt.c:1968: multiple definition of `_Xdebug_p'; .libs/globals.o:globals.c:(.bss+0xc): first defined here

Avoid redundant definition of _Xdebug_p in globals.c (which is under the
influence of _Xdebug being #defined to _Xdebug_p.

This appears to be an ancient hack to work around data exports resolving
to the address of the import stub, not the import. (See [1]).

(This is probably no longer needed or can be done in a better way, as
per the discussion under --enable-auto-import in the ld manpage.)

[1] https://cygwin.com/pipermail/cygwin-xfree/2001-May/004606.html

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
2022-07-15 18:06:12 +00:00
Benno Schulenberg
35ad99fad2 nls: add four sequences for the Samogitian E with dot above and macron
These sequences each produce two code points: the E-with-dot-above and
a combining macron.  The XIM input method is required for this to work.

(Also add a missing comment for a Unicode block.)

This fixes issue #54.

Requested-by: Arns Udovīčė

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-07-15 17:58:35 +00:00
Benno Schulenberg
2732dd20cc nls: delete eight sequences that pointlessly mix upper and lower case
Typing a compose sequence requires some care -- surely the user is able
to either keep holding the Shift key or not touch it at all while typing
the sequence.  Also, compose sequences are not an infinite resource AND
take up space and time -- defining redundant ones is a waste.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-07-15 10:03:00 +02:00
Benno Schulenberg
ea3cc474e1 nls: add compose sequences for the double-struck capitals ℕ ℤ ℚ ℝ ℂ
This allows the user to type the symbols for the five number systems.

This fixes the reasonable part of issue #159.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-07-15 10:03:00 +02:00
Benno Schulenberg
95a03cde43 nls: delete some pointless and wrong compose sequences meant for Bépo
Fourteen years ago, commit 7302984642 added some four hundred compose
sequences for the benefit of the French Bépo layout.  But among these
four hundred there are several that use symbols that are not available
in the Bépo layout and are thus impossible to type.  Some of the used
symbols, like Ahook, Ehook and Ohook, are not even present in *any*
layout, making these sequences a dead weight in the Compose file.

The Amacron and Omacron are available only in the Latvian, Hawaiian,
and Maori layouts, and the Omacron also in the Silesian layout.  But
the Latvian layouts and the Hawaiian do not contain any dead keys.
Only in the Maori and Silesian layouts these sequences with Amacron
and Omacron could be typed, but that was not why they were added.

More importantly, as James Cloos noted in issue #54, sequences like
`<dead_abovedot> <amacron>` for generating `ǡ` (that is: the macron
above the dot) are questionable, as in compose sequences generally
the first accent typed is the uppermost in the composed character.

Reference:
  https://gitlab.freedesktop.org/xorg/lib/libx11/-/issues/54#note_17321

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-07-14 12:31:52 +02:00
Matthieu Herrb
9702b83686 Mention that the predicate function is called with the display lock
Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
2022-07-01 11:13:13 +02:00
Benno Schulenberg
a5d00f889f docs: replace three placeholders with something that makes sense
Also, uncapitalize two arguments, to match the style of all others.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-06-24 16:23:14 +02:00
Benno Schulenberg
9ff8502040 docs: remove the unsightly dashes from the overviews of arguments
Seventeen months ago, commits 78027fdb7a and 4f15cfc645 removed
these dashes from two of the man pages.  Now, remove them all.
They are unhelpful and just make one wonder why they are there
(probably to function as improvised bullet points).

Also remove four leading spaces and a trailing comma.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-06-24 16:11:53 +02:00
Benno Schulenberg
a7968c47e3 docs: hard-wrap some items so that Table 2 fits within 80 characters
(Table 1 hard-wraps the first-column items in the same way.)

Also, correct the formatting of the subsequent paragraph.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-06-23 16:11:23 +02:00
Benno Schulenberg
c601c779ca nls: delete compose sequences that mix top-row digits with numpad digits
Compose sequences for circled numbers, like ⑫  or ㉑, are nice to have,
but allowing them to be composed by typing one digit on the top row and
the other on the numerical keypad (or the other way around) is over the
top.  Remove these absurd sequences.  Keep only the sequences where both
digits are either on the top row or on the numerical keypad.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
2022-06-15 11:02:08 +02:00