Diff
Not logged in

Differences From Artifact [f5fdfb6efc]:

To Artifact [fa452f53e1]:


600
601
602
603
604
605
606
607
608
609
610
611
612

613
614
615
616
617
618
619
620
621
622
623

624
625
626
627
628
629
630
631
600
601
602
603
604
605
606






607

608
609
610
611






612

613
614
615
616
617
618
619







-
-
-
-
-
-
+
-




-
-
-
-
-
-
+
-







	    i++;
	}
	if (i < 0) i = INT_MAX; /* Bug [2738427] */
    } else {
	register const char *endPtr = src + length - TCL_UTF_MAX;

	while (src < endPtr) {
	    if (((unsigned)UCHAR(*src) - 0xF0) < 5) {
		/* treat F0 - F4 as single character */
		ch = 0;
		src++;
	    } else {
		src += TclUtfToUniChar(src, &ch);
	    src += TclUtfToUniChar(src, &ch);
	    }
	    i++;
	}
	endPtr += TCL_UTF_MAX;
	while ((src < endPtr) && Tcl_UtfCharComplete(src, endPtr - src)) {
	    if (((unsigned)UCHAR(*src) - 0xF0) < 5) {
		/* treat F0 - F4 as single character */
		ch = 0;
		src++;
	    } else {
		src += TclUtfToUniChar(src, &ch);
	    src += TclUtfToUniChar(src, &ch);
	    }
	    i++;
	}
	if (src < endPtr) {
	    i += endPtr - src;
	}
    }
    return i;