Fix "compose as usual" for Unicode diacritics
authorMichael Schutte <michi@uiae.at>
Wed, 13 Oct 2010 15:07:26 +0000 (17:07 +0200)
committerAlexey Gladkov <legion@altlinux.org>
Mon, 18 Oct 2010 10:53:20 +0000 (14:53 +0400)
struct ccc in compose_as_usua[() uses three char members of unspecified
signedness; in case the compiler decides that they should be signed,
negative integers will end up in the accent table for c3 > 127.

Avoid the problem by explicitly using unsigned chars.

Signed-off-by: Michael Schutte <michi@uiae.at>
Signed-off-by: Alexey Gladkov <legion@altlinux.org>
src/loadkeys.y

index c8bb7cc..cc7e2ab 100644 (file)
@@ -1181,7 +1181,7 @@ compose_as_usual(char *charset) {
                exit(1);
        } else {
                struct ccc {
-                       char c1, c2, c3;
+                       unsigned char c1, c2, c3;
                } def_latin1_composes[68] = {
                        { '`', 'A', 0300 }, { '`', 'a', 0340 },
                        { '\'', 'A', 0301 }, { '\'', 'a', 0341 },