diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2015-09-22 08:20:03 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2015-09-22 08:20:03 (GMT) |
| commit | 5420a19e5c690cb9c96babceac44c26ff6f2167d (patch) | |
| tree | 09d42b476605f7860fbaebb136d4f8e144f14159 /generic/tclEncoding.c | |
| parent | 68d8dd01a2433624b814b9b3fa5a2a7438d4e547 (diff) | |
| parent | 256865fe128c764644470f0250d960bdf1d51925 (diff) | |
| download | tcl-5420a19e5c690cb9c96babceac44c26ff6f2167d.zip tcl-5420a19e5c690cb9c96babceac44c26ff6f2167d.tar.gz tcl-5420a19e5c690cb9c96babceac44c26ff6f2167d.tar.bz2 | |
merge trunk
Diffstat (limited to 'generic/tclEncoding.c')
| -rw-r--r-- | generic/tclEncoding.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 501fc57..b832d02 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2463,22 +2463,35 @@ UtfToUnicodeProc( if (dst > dstEnd) { result = TCL_CONVERT_NOSPACE; break; - } + } src += TclUtfToUniChar(src, &ch); /* * Need to handle this in a way that won't cause misalignment by * casting dst to a Tcl_UniChar. [Bug 1122671] - * XXX: This hard-codes the assumed size of Tcl_UniChar as 2. */ #ifdef WORDS_BIGENDIAN +#if TCL_UTF_MAX > 4 + *dst++ = (ch >> 24); + *dst++ = ((ch >> 16) & 0xFF); + *dst++ = ((ch >> 8) & 0xFF); + *dst++ = (ch & 0xFF); +#else *dst++ = (ch >> 8); *dst++ = (ch & 0xFF); +#endif +#else +#if TCL_UTF_MAX > 4 + *dst++ = (ch & 0xFF); + *dst++ = ((ch >> 8) & 0xFF); + *dst++ = ((ch >> 16) & 0xFF); + *dst++ = (ch >> 24); #else *dst++ = (ch & 0xFF); *dst++ = (ch >> 8); #endif +#endif } *srcReadPtr = src - srcStart; *dstWrotePtr = dst - dstStart; |
