Diff
Not logged in

Differences From Artifact [d84096c4c4]:

To Artifact [63dd626b9c]:


379
380
381
382
383
384
385






386
387
388
389
390
391
392
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398







+
+
+
+
+
+







	 */
    }
#endif

    *chPtr = (Tcl_UniChar) byte;
    return 1;
}
/* UTF_TO_UNI_MAX -- maximal value Tcl_UtfToUniChar could return */
#if TCL_UTF_MAX <= 3
#  define UTF_TO_UNI_MAX 3
#else
#  define UTF_TO_UNI_MAX 4
#endif

/*
 *---------------------------------------------------------------------------
 *
 * Tcl_UtfToUniCharDString --
 *
 *	Convert the UTF-8 string to Unicode.
684
685
686
687
688
689
690
691

692
693
694
695
696
697
698
690
691
692
693
694
695
696

697
698
699
700
701
702
703
704







-
+







	return start;
    }
    /* simplest case - ascii char */
    if (*((unsigned char *) look) < 0x80) {
	return look;
    }
    /* navigate up to max return value of Tcl_UtfToUniChar */
    for (i = 1; i <= 4; i++) {
    for (i = 1; i <= UTF_TO_UNI_MAX; i++) {
	if (look < start) {
	    look = start;
	    break;
	}
	if (*((unsigned char *) look) < 0x80) {
	    /* traversing back reaches ascii - either known mark points to char,
	     * or unexpected case with invalid utf-8 or unsupported surrogate