diff options
author | dgp <dgp@users.sourceforge.net> | 2016-03-24 01:50:58 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-03-24 01:50:58 (GMT) |
commit | 0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff (patch) | |
tree | 22f167be637be748db8434f0170554226771a3f6 | |
parent | db0bf7205a560ea1422e29947172280a18ac61e1 (diff) | |
download | tcl-0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff.zip tcl-0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff.tar.gz tcl-0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff.tar.bz2 |
Revise "osType" Tcl_ObjType to use new routine.
-rw-r--r-- | macosx/tclMacOSXFCmd.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/macosx/tclMacOSXFCmd.c b/macosx/tclMacOSXFCmd.c index 8ecfd0b..13a939f 100644 --- a/macosx/tclMacOSXFCmd.c +++ b/macosx/tclMacOSXFCmd.c @@ -692,24 +692,25 @@ UpdateStringOfOSType( register Tcl_Obj *objPtr) /* OSType object whose string rep to * update. */ { - char string[5]; + const int size = TCL_UTF_MAX * 4; + char *dst = Tcl_InitStringRep(objPtr, NULL, size); OSType osType = (OSType) objPtr->internalRep.longValue; - Tcl_DString ds; Tcl_Encoding encoding = Tcl_GetEncoding(NULL, "macRoman"); - unsigned len; - - string[0] = (char) (osType >> 24); - string[1] = (char) (osType >> 16); - string[2] = (char) (osType >> 8); - string[3] = (char) (osType); - string[4] = '\0'; - Tcl_ExternalToUtfDString(encoding, string, -1, &ds); - len = (unsigned) Tcl_DStringLength(&ds) + 1; - objPtr->bytes = ckalloc(len); - memcpy(objPtr->bytes, Tcl_DStringValue(&ds), len); - objPtr->length = Tcl_DStringLength(&ds); - Tcl_DStringFree(&ds); + char src[5]; + int written; + + src[0] = (char) (osType >> 24); + src[1] = (char) (osType >> 16); + src[2] = (char) (osType >> 8); + src[3] = (char) (osType); + src[4] = '\0'; + + Tcl_ExternalToUtf(NULL, encoding, src, -1, /* flags */ 0, + /* statePtr */ NULL, dst, size, /* srcReadPtr */ NULL, + /* dstWrotePtr */ &written, /* dstCharsPtr */ NULL); Tcl_FreeEncoding(encoding); + + (void)Tcl_InitStringRep(objPtr, NULL, written); } /* |