summaryrefslogtreecommitdiffstats
path: root/generic/tclUtf.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-11-16 13:50:32 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-11-16 13:50:32 (GMT)
commitfd3fbe8801d5ad9b3e3653e77d83149f1e8d09d6 (patch)
tree498355f045bba404552983c2aa3b9f5b47bc87ec /generic/tclUtf.c
parent5534478fa10a116663a3b05f32a119bb07aa9ed2 (diff)
downloadtcl-fd3fbe8801d5ad9b3e3653e77d83149f1e8d09d6.zip
tcl-fd3fbe8801d5ad9b3e3653e77d83149f1e8d09d6.tar.gz
tcl-fd3fbe8801d5ad9b3e3653e77d83149f1e8d09d6.tar.bz2
Handle Tcl_UtfAtIndex/Tcl_UniCharAtIndex for extended index range. More field fixes.
Diffstat (limited to 'generic/tclUtf.c')
-rw-r--r--generic/tclUtf.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index b0912ee..5f87ffa 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -701,12 +701,11 @@ Tcl_UtfPrev(
Tcl_UniChar
Tcl_UniCharAtIndex(
register const char *src, /* The UTF-8 string to dereference. */
- register int index) /* The position of the desired character. */
+ register size_t index) /* The position of the desired character. */
{
Tcl_UniChar ch = 0;
- while (index >= 0) {
- index--;
+ while (index--) {
src += TclUtfToUniChar(src, &ch);
}
return ch;
@@ -732,13 +731,14 @@ Tcl_UniCharAtIndex(
const char *
Tcl_UtfAtIndex(
register const char *src, /* The UTF-8 string. */
- register int index) /* The position of the desired character. */
+ register size_t index) /* The position of the desired character. */
{
Tcl_UniChar ch = 0;
- while (index > 0) {
- index--;
- src += TclUtfToUniChar(src, &ch);
+ if (index != (size_t)-1) {
+ while (index--) {
+ src += TclUtfToUniChar(src, &ch);
+ }
}
return src;
}