summaryrefslogtreecommitdiffstats
path: root/generic/tclStringObj.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-21 14:44:58 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-01-21 14:44:58 (GMT)
commitd4e2ae119e3f6d6e5d430cf810ea4dc396ecd9b7 (patch)
treefd9daa54b6a510f3cb730698e505fe13f824b4e4 /generic/tclStringObj.c
parentf97560a94963b378ccc5b75e5dbc2949eca30b9f (diff)
downloadtcl-d4e2ae119e3f6d6e5d430cf810ea4dc396ecd9b7.zip
tcl-d4e2ae119e3f6d6e5d430cf810ea4dc396ecd9b7.tar.gz
tcl-d4e2ae119e3f6d6e5d430cf810ea4dc396ecd9b7.tar.bz2
Undo part of [26539e78a7]. Although Tcl_GetRange() does it's own parameter check, it's caller doesn't have to do it any more. However, put back these check, better not depend on the improved behavior of Tcl_GetRange (yet). This gives the freedom to bring back Tcl_GetRange() to how it was in Tcl 8.6.10, if desired
Diffstat (limited to 'generic/tclStringObj.c')
-rw-r--r--generic/tclStringObj.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index b4f05dd..9e0e4af 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -819,6 +819,7 @@ Tcl_GetRange(
FillUnicodeRep(objPtr);
stringPtr = GET_STRING(objPtr);
}
+
if (last < 0 || last >= stringPtr->numChars) {
last = stringPtr->numChars - 1;
}
@@ -829,12 +830,12 @@ Tcl_GetRange(
#if TCL_UTF_MAX == 4
/* See: bug [11ae2be95dac9417] */
if ((first > 0) && ((stringPtr->unicode[first] & 0xFC00) == 0xDC00)
- && ((stringPtr->unicode[first-1] & 0xFC00) == 0xD800)) {
+ && ((stringPtr->unicode[first-1] & 0xFC00) == 0xD800)) {
++first;
}
if ((last + 1 < stringPtr->numChars)
- && ((stringPtr->unicode[last+1] & 0xFC00) == 0xDC00)
- && ((stringPtr->unicode[last] & 0xFC00) == 0xD800)) {
+ && ((stringPtr->unicode[last+1] & 0xFC00) == 0xDC00)
+ && ((stringPtr->unicode[last] & 0xFC00) == 0xD800)) {
++last;
}
#endif