[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#658667: Crashes DECTALK by sending high-bit characters



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;

Reply to: