From 0c1dd51a1481431e5ea33b1a451b99c939775ea8 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 8 Mar 2022 08:23:07 +0000 Subject: This typecast is wrong (and was already wrong). Correct it, and add testcase to prove it --- generic/tclStringObj.c | 2 +- tests/string.test | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index c2249ae..7d4aef3 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -561,7 +561,7 @@ Tcl_GetUniChar( TclNumUtfChars(stringPtr->numChars, objPtr->bytes, objPtr->length); } if (stringPtr->numChars == objPtr->length) { - return (int) objPtr->bytes[index]; + return (unsigned char) objPtr->bytes[index]; } FillUnicodeRep(objPtr); stringPtr = GET_STRING(objPtr); diff --git a/tests/string.test b/tests/string.test index 7da50e9..203d0c6 100644 --- a/tests/string.test +++ b/tests/string.test @@ -510,6 +510,9 @@ test string-5.20.$noComp {string index, bytearray object out of bounds} -body { test string-5.21.$noComp {string index, surrogates, bug [11ae2be95dac9417]} -constraints utf16 -body { run {list [string index a\U100000b 1] [string index a\U100000b 2] [string index a\U100000b 3]} } -result [list \U100000 {} b] +test string-5.22.$noComp {string index} -constraints testbytestring -body { + run {list [scan [string index [testbytestring \xFF] 0] %c var] $var} +} -result {1 255} test string-6.1.$noComp {string is, not enough args} { -- cgit v0.12