Fix #113 editor_settings.xml corruption

In the `parse_tag` method of the `class ResourceInteractiveLoaderXML`,
the class responsible of loading the editor_settings.xml file, the
properties' values are loaded directly into an `String` object but the
file contents are always UTF-8, which leads to garbage in the XML file
when saved.

This patch reads the properties' values in a `CharString` and translate
them to UTF-8.
This commit is contained in:
Terseus 2014-02-18 21:37:58 +01:00
parent 2bfbf89781
commit b6583909a9
1 changed files with 9 additions and 7 deletions

View File

@ -97,16 +97,17 @@ ResourceInteractiveLoaderXML::Tag* ResourceInteractiveLoaderXML::parse_tag(bool
if (!complete) {
String name;
String value;
CharString r_value;
bool reading_value=false;
while(!f->eof_reached()) {
CharType c=get_char();
if (c=='>') {
if (value.length()) {
if (r_value.size()) {
tag.args[name]=value;
r_value.push_back(0);
tag.args[name].parse_utf8(r_value.get_data());
}
break;
@ -115,17 +116,18 @@ ResourceInteractiveLoaderXML::Tag* ResourceInteractiveLoaderXML::parse_tag(bool
if (!reading_value && name.length()) {
reading_value=true;
} else if (reading_value && value.length()) {
} else if (reading_value && r_value.size()) {
tag.args[name]=value;
r_value.push_back(0);
tag.args[name].parse_utf8(r_value.get_data());
name="";
value="";
r_value.clear();
reading_value=false;
}
} else if (reading_value) {
value+=c;
r_value.push_back(c);
} else {
name+=c;