summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-11-09 12:52:02 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-11-09 12:52:02 (GMT)
commitd6acf8cfea0e3656b56c7f6dc8477cac20b8de95 (patch)
tree58fcb7aab6bb25e926ad91b8e24ed69f128b966d /generic
parent91229781db6171df15c6ebec80c8b2e4f979278e (diff)
parent0faadee83ceeb72ae3634429f88f0defcb607169 (diff)
downloadtcl-d6acf8cfea0e3656b56c7f6dc8477cac20b8de95.zip
tcl-d6acf8cfea0e3656b56c7f6dc8477cac20b8de95.tar.gz
tcl-d6acf8cfea0e3656b56c7f6dc8477cac20b8de95.tar.bz2
merge trunk
Diffstat (limited to 'generic')
-rw-r--r--generic/tclScan.c12
-rw-r--r--generic/tclStringObj.c6
2 files changed, 13 insertions, 5 deletions
diff --git a/generic/tclScan.c b/generic/tclScan.c
index 182737f..925136d 100644
--- a/generic/tclScan.c
+++ b/generic/tclScan.c
@@ -885,9 +885,17 @@ Tcl_ScanObjCmd(
* Scan a single Unicode character.
*/
- string += TclUtfToUniChar(string, &sch);
+ offset = TclUtfToUniChar(string, &sch);
+ i = (int)sch;
+#if TCL_UTF_MAX == 4
+ if (!offset) {
+ offset = Tcl_UtfToUniChar(string, &sch);
+ i = (((i<<10) & 0x0FFC00) + 0x10000) + (sch & 0x3FF);
+ }
+#endif
+ string += offset;
if (!(flags & SCAN_SUPPRESS)) {
- objPtr = Tcl_NewIntObj((int)sch);
+ objPtr = Tcl_NewIntObj(i);
Tcl_IncrRefCount(objPtr);
CLANG_ASSERT(objs);
objs[objIndex++] = objPtr;
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 097b777..3906f3f 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -3459,7 +3459,6 @@ TclStringObjReverse(
* Tcl_SetObjLength into growing the unicode rep buffer.
*/
- ch = 0;
objPtr = Tcl_NewUnicodeObj(&ch, 1);
Tcl_SetObjLength(objPtr, stringPtr->numChars);
to = Tcl_GetUnicode(objPtr);
@@ -3562,7 +3561,7 @@ ExtendUnicodeRepWithString(
{
String *stringPtr = GET_STRING(objPtr);
size_t needed, numOrigChars = 0;
- Tcl_UniChar *dst;
+ Tcl_UniChar *dst, unichar = 0;
if (stringPtr->hasUnicode) {
numOrigChars = stringPtr->numChars;
@@ -3585,7 +3584,8 @@ ExtendUnicodeRepWithString(
numAppendChars = 0;
}
for (dst=stringPtr->unicode + numOrigChars; numAppendChars-- > 0; dst++) {
- bytes += TclUtfToUniChar(bytes, dst);
+ bytes += TclUtfToUniChar(bytes, &unichar);
+ *dst = unichar;
}
*dst = 0;
}