BufFilePut is called (through FontFilePutc macro) with some (shr-ed or not) ints. int may be equal -1 (e.g. 0xFFFFFFFF or 0xFFxxxxxx >> 24). -1 has special meaning for BufFileRawFlush (just flush instead of write char and flush), so any FF values on buffer boundary disappeared... --- XFree86-4.1.0/xc/lib/font/include/bufio.h.orig Wed Jan 17 20:43:31 2001 +++ XFree86-4.1.0/xc/lib/font/include/bufio.h Mon Jul 2 13:25:41 2001 @@ -74,7 +74,7 @@ extern void BufFileFree ( BufFilePtr ); #define BufFileGet(f) ((f)->left-- ? *(f)->bufp++ : ((f)->eof = (*(f)->input) (f))) -#define BufFilePut(c,f) (--(f)->left ? *(f)->bufp++ = (c) : (*(f)->output) (c,f)) +#define BufFilePut(c,f) (--(f)->left ? *(f)->bufp++ = ((unsigned char)(c)) : (*(f)->output) ((unsigned char)(c),f)) #define BufFileSkip(f,c) ((f)->eof = (*(f)->skip) (f, c)) #ifndef TRUE