Browse Source

use QString::fromLocal8Bit instead of QString::fromLatin1

This ensures that non-Latin 1 characters are handled correctly.
Ashish Kulkarni 10 years ago
parent
commit
19f7300227
2 changed files with 5 additions and 5 deletions
  1. 4 4
      src/lib/reflect.cc
  2. 1 1
      src/lib/reflect.hh

+ 4 - 4
src/lib/reflect.cc

@@ -33,15 +33,15 @@ bool ReflectSimple::set(const char * name, const QString & value) {
 QString ReflectClass::get(const char * name) {
 	int i=0;
 	while (name[i] !=0 && name[i] != '.' && name[i] != '[') ++i;
-	if (!elms.contains(QString::fromLatin1(name, i))) return QString();
-	return elms[QString::fromLatin1(name,i)]->get(name + (name[i] == '.'?i+1:i));
+	if (!elms.contains(QString::fromLocal8Bit(name, i))) return QString();
+	return elms[QString::fromLocal8Bit(name,i)]->get(name + (name[i] == '.'?i+1:i));
 }
 
 bool ReflectClass::set(const char * name, const QString & value) {
 	int i=0;
 	while (name[i] !=0 && name[i] != '.' && name[i] != '[') ++i;
-	if (!elms.contains(QString::fromLatin1(name, i))) return false;
-	return elms[QString::fromLatin1(name,i)]->set(name + (name[i] == '.'?i+1:i), value);
+	if (!elms.contains(QString::fromLocal8Bit(name, i))) return false;
+	return elms[QString::fromLocal8Bit(name,i)]->set(name + (name[i] == '.'?i+1:i), value);
 }
 
 

+ 1 - 1
src/lib/reflect.hh

@@ -224,7 +224,7 @@ struct DLL_LOCAL ReflectImpl< QList< X> >: public Reflect {
 			next = 0;
 			while (name[next] != '\0' && name[next] != ']') ++next;
 			bool ok=true;
-			elm = QString::fromLatin1(name+1,next-1).toInt(&ok);
+			elm = QString::fromLocal8Bit(name+1,next-1).toInt(&ok);
 			if (name[next] == ']') ++next;
 			return ok;
 		}