fix some bugs
[mdictionary] / src / plugins / stardict / UncompressedReader.cpp
index d4370c5..8bf95b7 100644 (file)
@@ -27,13 +27,20 @@ void UncompressedReader::close() {
 }
 
 QChar UncompressedReader::readChar() {
-    char c[2]={0};
+    char c[4]={0};
+    QString cha;
+
     _stream.readRawData(c,1);
-    QString cha(QString::fromUtf8(c));
-    if(!cha.at(0).isLetter() && c[0]!=0){
+    if(((unsigned char)c[0])>127){
         _stream.readRawData(c+1,1);
-        cha=QString::fromUtf8(c);
+        if(((unsigned char)c[1])>127 && ((unsigned char)c[1])<192){
+            _stream.readRawData(c+2,1);
+            if(((unsigned char)c[2])>127 && ((unsigned char)c[2])<192)
+                _stream.readRawData(c+3,1);
+        }
     }
+
+    cha=QString::fromUtf8(c);
     return cha.at(0);
 }
 
@@ -68,7 +75,6 @@ qint32 UncompressedReader::readInt32BigEndian() {
     qint32 value;
     _stream>>value;
     _stream.setByteOrder(QDataStream::LittleEndian);
-
     return value;
 }