--- old/src/core/osutils.cc 2007-10-13 18:23:16.000000000 -0400 +++ new/src/core/osutils.cc 2008-06-20 10:54:41.000000000 -0400 @@ -397,23 +397,30 @@ string result = ""; for (unsigned int i = 0; i < s.length(); i++) - switch (s[i]) - { - case '<': - result += "<"; - break; - case '>': - result += ">"; - break; - case '&': - result += "&"; - break; - case '"': - result += """; - break; - default: - result += s[i]; - } + // #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] + if (s[i] == 0x9 + || s[i] == 0xA + || s[i] == 0xD + || (s[i] >= 0x20 && s[i] <= 0xD7FF) + || (s[i] >= 0xE000 && s[i] <= 0xFFFD) + || (s[i] >= 0x10000 && s[i] <= 0x10FFFF)) + switch (s[i]) + { + case '<': + result += "<"; + break; + case '>': + result += ">"; + break; + case '&': + result += "&"; + break; + case '"': + result += """; + break; + default: + result += s[i]; + } return result; }