Mercurial > hg > easyhg
diff src/common.cpp @ 410:4f5414a7edb4
Handle escaped backslash (\\u) for cases where Unicode escape is not intended
author | Chris Cannam |
---|---|
date | Tue, 07 Jun 2011 10:59:28 +0100 |
parents | 005633eed862 |
children | d0ebd797c5a1 |
line wrap: on
line diff
--- a/src/common.cpp Mon Jun 06 21:33:25 2011 +0100 +++ b/src/common.cpp Tue Jun 07 10:59:28 2011 +0100 @@ -262,14 +262,24 @@ { QString d; for (int i = 0; i < s.length(); ++i) { + // backslash-u escaped with another backslash: replace with a + // single backslash and skip on + if (i+2 < s.length() && s[i] == '\\' && s[i+1] == '\\' && s[i+2] == 'u') { + d += "\\u"; + i += 2; + continue; + } + // unescaped backslash followed by u and at least four more + // chars: replace with Unicode character if (i+5 < s.length() && s[i] == '\\' && s[i+1] == 'u') { QString uni = s.mid(i+2, 4); QByteArray ba = QByteArray::fromHex(uni.toAscii()); d += QChar(ba[1], ba[0]); i += 5; - } else { - d += s[i]; + continue; } + // default case: leave alone + d += s[i]; } return d; }