[BRLTTY] A bug in release 3.10
Samuel Thibault
samuel.thibault at ens-lyon.org
Wed Aug 13 21:42:50 EDT 2008
Jean-Philippe MENGUAL, le Thu 14 Aug 2008 02:44:17 +0200, a écrit :
> 493 if ((needsEscape[((unsigned)buffer[end - 1])] != 1
Ooh, that line is bogus indeed. The char needs to be casted to unsigned
char rather than unsigned int, because chars are signed and thus values
not in the range 0..127 (and thus -128..-1) just get sign-extended and
then converted to unsigned as e.g. 0xffffffffffff..0xffffffffff80. Here
is a patch.
Samuel
-------------- next part --------------
Index: BrailleDrivers/EuroBraille/eu_clio.c
===================================================================
--- BrailleDrivers/EuroBraille/eu_clio.c (r?vision 3875)
+++ BrailleDrivers/EuroBraille/eu_clio.c (copie de travail)
@@ -491,9 +491,9 @@
return 0;
/* ignoring packets received twice **/
- if ((needsEscape[((unsigned)buffer[end - 1])] != 1
+ if ((needsEscape[((unsigned char)buffer[end - 1])] != 1
&& buffer[end - 2] == prevPktNbr)
- || (needsEscape[((unsigned)buffer[end - 1])] == 1
+ || (needsEscape[((unsigned char)buffer[end - 1])] == 1
&& buffer[end - 3] == prevPktNbr))
{
memmove(buffer, buffer + end + 1, pos - framelen);
@@ -501,7 +501,7 @@
return 0;
}
/* Updating pprevPktNbr */
- if (needsEscape[((unsigned)buffer[end - 1])] != 1)
+ if (needsEscape[((unsigned char)buffer[end - 1])] != 1)
prevPktNbr = buffer[end - 2];
else
prevPktNbr = buffer[end - 3];
More information about the BRLTTY
mailing list