diff options
| -rw-r--r-- | generic/tclTestObj.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 3bf6989..6f919eb 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -1261,7 +1261,7 @@ TeststringobjCmd( static const char *const options[] = { "append", "appendstrings", "get", "get2", "length", "length2", "set", "set2", "setlength", "maxchars", "range", "appendself", - "appendself2", NULL + "appendself2", "newunicode", NULL }; if (objc < 3) { @@ -1497,6 +1497,23 @@ TeststringobjCmd( Tcl_AppendUnicodeToObj(varPtr[varIndex], unicode + length, size - length); Tcl_SetObjResult(interp, varPtr[varIndex]); break; + case 13: /* newunicode*/ + unicode = (Tcl_UniChar *)Tcl_Alloc((objc - 3) * sizeof(Tcl_UniChar)); + for (i = 0; i < (objc - 3); ++i) { + int val; + if (Tcl_GetIntFromObj(interp, objv[i + 3], &val) != TCL_OK) { + break; + } + unicode[i] = (Tcl_UniChar)val; + } + if (i < (objc-3)) { + Tcl_Free(unicode); + return TCL_ERROR; + } + SetVarToObj(varPtr, varIndex, Tcl_NewUnicodeObj(unicode, objc - 3)); + Tcl_SetObjResult(interp, varPtr[varIndex]); + Tcl_Free(unicode); + break; } return TCL_OK; |
