summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2021-03-23 16:33:25 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2021-03-23 16:33:25 (GMT)
commit811f1574bb3980d57f05b8334bd6d1aecdf4e32e (patch)
tree5c50bc92e0098cc8488749e26c997f058689794a /win
parentcb689d388a07704cc34424caf91ff48bf6a3953b (diff)
downloadtk-811f1574bb3980d57f05b8334bd6d1aecdf4e32e.zip
tk-811f1574bb3980d57f05b8334bd6d1aecdf4e32e.tar.gz
tk-811f1574bb3980d57f05b8334bd6d1aecdf4e32e.tar.bz2
Fix 3 places where Tcl_UtfToUniChar must be used and not TkUtfToUniChar: numChars/charIndex is counting character indexes here; surrogate-pairs count as 2.
This can cause a miscount when Emoji are pasted in a Text widget.
Diffstat (limited to 'win')
-rw-r--r--win/tkWinMenu.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/win/tkWinMenu.c b/win/tkWinMenu.c
index 67894c7..22e84cb 100644
--- a/win/tkWinMenu.c
+++ b/win/tkWinMenu.c
@@ -511,7 +511,7 @@ GetEntryText(
: Tcl_GetString(mePtr->accelPtr);
const char *p, *next;
Tcl_DString itemString;
- int ch;
+ Tcl_UniChar ch = 0;
/*
* We have to construct the string with an ampersand preceeding the
@@ -528,16 +528,17 @@ GetEntryText(
if (*p == '&') {
Tcl_DStringAppend(&itemString, "&", 1);
}
- next = p + TkUtfToUniChar(p, &ch);
+ next = p + Tcl_UtfToUniChar(p, &ch);
Tcl_DStringAppend(&itemString, p, (int) (next - p));
}
+ ch = 0;
if (mePtr->accelLength > 0) {
Tcl_DStringAppend(&itemString, "\t", 1);
for (p = accel, i = 0; *p != '\0'; i++, p = next) {
if (*p == '&') {
Tcl_DStringAppend(&itemString, "&", 1);
}
- next = p + TkUtfToUniChar(p, &ch);
+ next = p + Tcl_UtfToUniChar(p, &ch);
Tcl_DStringAppend(&itemString, p, (int) (next - p));
}
}