diff --git a/src/engine/fileOps/tfm.cpp b/src/engine/fileOps/tfm.cpp index d53e51925..7d9a8687e 100644 --- a/src/engine/fileOps/tfm.cpp +++ b/src/engine/fileOps/tfm.cpp @@ -38,20 +38,27 @@ class TFMRLEReader { int tagLenLeft; signed char tagChar; - void decodeRLE(signed char prevChar) { + void decodeRLE(unsigned char prevChar) { int lenShift=0; tagLenLeft=0; - signed char rleTag=0; + unsigned char rleTag=0; + do { - rleTag=readC(); + rleTag=readCNoRLE(); tagLenLeft|=(rleTag&0x7F)<len) throw TFMEndOfFileException(this,len); + if (curSeek>len) throw TFMEndOfFileException(this,len); return buf[curSeek++]; }