Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | merge 8.7 |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
aaa3ab6a728d26e116853e3dea1bcada |
User & Date: | jan.nijtmans 2018-04-23 15:07:29.959 |
Context
2018-04-24
| ||
13:51 | Merge 8.7 check-in: 78f530026b user: dgp tags: trunk | |
2018-04-23
| ||
23:44 | Merge 8.7 Closed-Leaf check-in: 68ab81b8f8 user: jan.nijtmans tags: mistake | |
15:07 | merge 8.7 check-in: aaa3ab6a72 user: jan.nijtmans tags: trunk | |
15:06 | Some better surrogate handling in encodings. Not spotted before ... check-in: 0e622ccdb3 user: jan.nijtmans tags: core-8-branch | |
13:53 | merge 8.7 check-in: 06bb3a2bf8 user: dgp tags: trunk | |
Changes
Changes to generic/tclEncoding.c.
︙ | ︙ | |||
2291 2292 2293 2294 2295 2296 2297 | * incomplete char its bytes are made to represent themselves. */ *chPtr = (unsigned char) *src; src += 1; dst += Tcl_UniCharToUtf(*chPtr, dst); } else { | > > > > > | | > > | 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 | * incomplete char its bytes are made to represent themselves. */ *chPtr = (unsigned char) *src; src += 1; dst += Tcl_UniCharToUtf(*chPtr, dst); } else { int len = TclUtfToUniChar(src, chPtr); src += len; dst += Tcl_UniCharToUtf(*chPtr, dst); #if TCL_UTF_MAX <= 4 if (!len) { src += TclUtfToUniChar(src, chPtr); dst += Tcl_UniCharToUtf(*chPtr, dst); } #endif } } *srcReadPtr = src - srcStart; *dstWrotePtr = dst - dstStart; *dstCharsPtr = numChars; return result; |
︙ | ︙ | |||
2698 2699 2700 2701 2702 2703 2704 | */ result = TCL_CONVERT_MULTIBYTE; break; } len = TclUtfToUniChar(src, &ch); | | > > > > | 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 | */ result = TCL_CONVERT_MULTIBYTE; break; } len = TclUtfToUniChar(src, &ch); #if TCL_UTF_MAX > 4 /* * This prevents a crash condition. More evaluation is required for * full support of int Tcl_UniChar. [Bug 1004065] */ if (ch & 0xffff0000) { word = 0; } else #else if (!len) { word = 0; } else #endif word = fromUnicode[(ch >> 8)][ch & 0xff]; if ((word == 0) && (ch != 0)) { if (flags & TCL_ENCODING_STOPONERROR) { result = TCL_CONVERT_UNKNOWN; break; |
︙ | ︙ | |||
2904 2905 2906 2907 2908 2909 2910 | } len = TclUtfToUniChar(src, &ch); /* * Check for illegal characters. */ | | > > > > | > > | 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 | } len = TclUtfToUniChar(src, &ch); /* * Check for illegal characters. */ if (ch > 0xff #if TCL_UTF_MAX <= 4 || !len #endif ) { if (flags & TCL_ENCODING_STOPONERROR) { result = TCL_CONVERT_UNKNOWN; break; } #if TCL_UTF_MAX <= 4 if (!len) len = 4; #endif /* * Plunge on, using '?' as a fallback character. */ ch = (Tcl_UniChar) '?'; } |
︙ | ︙ |