Package: yasr version: 0.6.9-2 Severity: normal Yasr allows "extended" characters (with the high bit set) to be sent to a DECTALK Express. Some of these characters cause the synthesizer to crash, after which it must be power cycled.
I have implemented a local solution that excludes high-bit characters entirely (see attached patch). The alternative (and superior) approach would be to use the existing exclusion mechanism in Yasr by populating the array of "unspeakable" characters for the DECTALK. This would require each of the extended characters to be tested to identify those responsible for the crashes. Since DECTALK Express is English only, as far as I know, there really isn't much point in sending extended characters to it anyway, so I've locally adopted the more general solution, which might not be acceptable from a Debian point of view. A simple patch is attached.
Index: yasr-0.6.9/yasr/tts.c =================================================================== --- yasr-0.6.9.orig/yasr/tts.c 2008-02-03 00:10:07.000000000 +1100 +++ yasr-0.6.9/yasr/tts.c 2012-02-05 10:59:06.059007839 +1100 @@ -281,6 +281,9 @@ char *p = synth[tts.synth].unspeakable; if (ch < 32) return 1; + /* characters with high bit set cause DECTALK to crash */ + if (tts.synth == TTS_DECTALK && ch & 0x80) + return 1; while (*p) { if (*p++ == ch) return 1;