Browse Source

Merge pull request #17178 from akien-mga/prop-serialization

Fix serialization of identifiers with non printable ASCII characters
Rémi Verschelde 7 years ago
parent
commit
79a07527ab
1 changed files with 9 additions and 2 deletions
  1. 9 2
      scene/resources/scene_format_text.cpp

+ 9 - 2
scene/resources/scene_format_text.cpp

@@ -1445,8 +1445,15 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant &p_variant,
 
 static String _valprop(const String &p_name) {
 
-	if (p_name.find("\"") != -1 || p_name.find("=") != -1 || p_name.find(" ") != -1)
-		return "\"" + p_name.c_escape_multiline() + "\"";
+	// Escape and quote strings with extended ASCII or further Unicode characters
+	// as well as '"', '=' or ' ' (32)
+	const CharType *cstr = p_name.c_str();
+	for (int i = 0; cstr[i]; i++) {
+		if (cstr[i] == '=' || cstr[i] == '"' || cstr[i] < 33 || cstr[i] > 126) {
+			return "\"" + p_name.c_escape_multiline() + "\"";
+		}
+	}
+	// Keep as is
 	return p_name;
 }