summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-03-24 01:50:58 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-03-24 01:50:58 (GMT)
commit0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff (patch)
tree22f167be637be748db8434f0170554226771a3f6
parentdb0bf7205a560ea1422e29947172280a18ac61e1 (diff)
downloadtcl-0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff.zip
tcl-0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff.tar.gz
tcl-0dcadf98b4e0b30fca2fb1b49a69011a4b3e91ff.tar.bz2
Revise "osType" Tcl_ObjType to use new routine.
-rw-r--r--macosx/tclMacOSXFCmd.c31
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);
}
/*