diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-03-02 16:04:59 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-03-02 16:04:59 (GMT) |
commit | bfaca509637e46e0ffd48c20a60b78c617c7bf44 (patch) | |
tree | 4a8907259172a0e3fb26c1592c5f5a9c9169d90c /generic/tclScan.c | |
parent | cc3041cee0463eae2d11f0125f3921b66f67497a (diff) | |
download | tcl-bfaca509637e46e0ffd48c20a60b78c617c7bf44.zip tcl-bfaca509637e46e0ffd48c20a60b78c617c7bf44.tar.gz tcl-bfaca509637e46e0ffd48c20a60b78c617c7bf44.tar.bz2 |
Backport [bd94500678e837d7] from 8.7, preventing endless loops in UTF-8 conversions when handling surrogates. Only effective when compiling with -DTCL_UTF_MAX=4|6 (default: 3). Meant for benefit of Androwish.
Diffstat (limited to 'generic/tclScan.c')
-rw-r--r-- | generic/tclScan.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/generic/tclScan.c b/generic/tclScan.c index 3dae3b3..ade5f33 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -260,7 +260,7 @@ ValidateFormat( Tcl_UniChar ch = 0; int objIndex, xpgSize, nspace = numVars; int *nassign = TclStackAlloc(interp, nspace * sizeof(int)); - char buf[TCL_UTF_MAX+1]; + char buf[TCL_UTF_MAX+1] = ""; Tcl_Obj *errorMsg; /* Place to build an error messages. Note that * these are messy operations because we do * not want to use the formatting engine; @@ -889,7 +889,7 @@ Tcl_ScanObjCmd( i = (int)sch; #if TCL_UTF_MAX == 4 if (!offset) { - offset = Tcl_UtfToUniChar(string, &sch); + offset = TclUtfToUniChar(string, &sch); i = (((i<<10) & 0x0FFC00) + 0x10000) + (sch & 0x3FF); } #endif |