diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-01-21 14:44:58 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-01-21 14:44:58 (GMT) |
| commit | d4e2ae119e3f6d6e5d430cf810ea4dc396ecd9b7 (patch) | |
| tree | fd9daa54b6a510f3cb730698e505fe13f824b4e4 /generic/tclStringObj.c | |
| parent | f97560a94963b378ccc5b75e5dbc2949eca30b9f (diff) | |
| download | tcl-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.c | 7 |
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 |
