1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-02 03:52:49 -05:00

Support in the cross-platform code for translating to and from

UTF-16 when exchanging wchar_t strings with the front end. Enabled
by a #define in the platform's header file (one should not
promiscuously translate UTF-16 surrogate pairs on 32-bit wchar_t
platforms since that could give rise to redundant encoding attacks),
which is present on Windows.

[originally from svn r8495]
This commit is contained in:
Simon Tatham
2009-03-24 22:24:31 +00:00
parent 713df723ae
commit 87aafaa89a
3 changed files with 38 additions and 6 deletions

View File

@ -5262,8 +5262,17 @@ static void clipme(Terminal *term, pos top, pos bottom, int rect, int desel)
set = (uc & CSET_MASK);
c = (uc & ~CSET_MASK);
cbuf[0] = uc;
cbuf[1] = 0;
#ifdef PLATFORM_IS_UTF16
if (uc > 0x10000 && uc < 0x110000) {
cbuf[0] = 0xD800 | ((uc - 0x10000) >> 10);
cbuf[1] = 0xDC00 | ((uc - 0x10000) & 0x3FF);
cbuf[2] = 0;
} else
#endif
{
cbuf[0] = uc;
cbuf[1] = 0;
}
if (DIRECT_FONT(uc)) {
if (c >= ' ' && c != 0x7F) {