speakup: Fix bogus caps on speaking unicode characters
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 14 Mar 2017 19:56:21 +0000 (20:56 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Mar 2017 02:14:14 +0000 (11:14 +0900)
commit 33590c185299 ("speakup: Support spelling unicode characters")
mistakenly passed unicode characters to IS_CHAR(), which only
supports latin1.  Let's assume non-latin1 is lower case, like is done
in spell_word().

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Reviewed-by: Chris Brannon <chris@the-brannons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/speakup/main.c

index dc07b2328bc05828bdfaef6db91d7a6233db9287..6f1595737553ea29b008c092cc163912a7a58e13 100644 (file)
@@ -433,12 +433,12 @@ static void speak_char(u16 ch)
        struct var_t *direct = spk_get_var(DIRECT);
 
        if (ch >= 0x100 || (direct && direct->u.n.value)) {
-               if (IS_CHAR(ch, B_CAP)) {
+               if (ch < 0x100 && IS_CHAR(ch, B_CAP)) {
                        spk_pitch_shift++;
                        synth_printf("%s", spk_str_caps_start);
                }
                synth_putwc_s(ch);
-               if (IS_CHAR(ch, B_CAP))
+               if (ch < 0x100 && IS_CHAR(ch, B_CAP))
                        synth_printf("%s", spk_str_caps_stop);
                return;
        }