[patch 1/2] speakup: Fix hang on spelling words with non-latin1 characters

Samuel Thibault samuel.thibault at ens-lyon.org
Sat Mar 11 20:56:07 EST 2017

9831013cbdbd3d06430a1db01d8c32d50c7d1c04 ('speakup: convert screen reading to
16bit characters') made spell_word() ignore non-latin1 characters now read from
the VC, but it missed actually skipping them, leading to an infinite loop. This fixes it by just advancing the unicode character pointer.

Reported-by: Zahari Yurukov <zahari.yurukov at gmail.com>
Signed-off-by: Samuel Thibault <samuel.thibault at ens-lyon.org>
Tested-by: Zahari Yurukov <zahari.yurukov at gmail.com>

Index: linux-2.6/drivers/staging/speakup/main.c
--- linux-2.6.orig/drivers/staging/speakup/main.c
+++ linux-2.6/drivers/staging/speakup/main.c
@@ -718,8 +718,11 @@ static void spell_word(struct vc_data *v
 	while ((ch = *cp)) {
 		if (ch >= 0x100)
+		{
 			/* FIXME */
+			cp++;
+		}
 		if (cp != buf)
 			synth_printf(" %s ", delay_str[spk_spell_delay]);
 		if (IS_CHAR(ch, B_CAP)) {

More information about the Speakup mailing list