diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-11-16 13:50:32 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-11-16 13:50:32 (GMT) |
commit | fd3fbe8801d5ad9b3e3653e77d83149f1e8d09d6 (patch) | |
tree | 498355f045bba404552983c2aa3b9f5b47bc87ec /generic/tclUtf.c | |
parent | 5534478fa10a116663a3b05f32a119bb07aa9ed2 (diff) | |
download | tcl-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.c | 14 |
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; } |