diff options
author | dgp <dgp@users.sourceforge.net> | 2016-11-01 16:18:08 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-11-01 16:18:08 (GMT) |
commit | 02769c476212b9eca784283d63eee3c3e28a3d76 (patch) | |
tree | 52b0d7cb7390f6382be877a794f749ee0ad61a7b /generic/tclCmdMZ.c | |
parent | 1cb5e0af9770c565d370fbb5cf713af0d1f561de (diff) | |
parent | cdc8b6080c2a2f05f3f66adfa3184405f04dc003 (diff) | |
download | tcl-02769c476212b9eca784283d63eee3c3e28a3d76.zip tcl-02769c476212b9eca784283d63eee3c3e28a3d76.tar.gz tcl-02769c476212b9eca784283d63eee3c3e28a3d76.tar.bz2 |
Refactor to channel all [string cat] functions through a single implementation.
Diffstat (limited to 'generic/tclCmdMZ.c')
-rw-r--r-- | generic/tclCmdMZ.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/generic/tclCmdMZ.c b/generic/tclCmdMZ.c index 591e31c..10c2ef3 100644 --- a/generic/tclCmdMZ.c +++ b/generic/tclCmdMZ.c @@ -2855,7 +2855,7 @@ StringCatCmd( int objc, /* Number of arguments. */ Tcl_Obj *const objv[]) /* Argument objects. */ { - int i; + int code; Tcl_Obj *objResultPtr; if (objc < 2) { @@ -2872,16 +2872,16 @@ StringCatCmd( Tcl_SetObjResult(interp, objv[1]); return TCL_OK; } - objResultPtr = objv[1]; - if (Tcl_IsShared(objResultPtr)) { - objResultPtr = Tcl_DuplicateObj(objResultPtr); - } - for(i = 2;i < objc;i++) { - Tcl_AppendObjToObj(objResultPtr, objv[i]); + + code = TclStringCatObjv(interp, /* inPlace */ 1, objc-1, objv+1, + &objResultPtr); + + if (code == TCL_OK) { + Tcl_SetObjResult(interp, objResultPtr); + return TCL_OK; } - Tcl_SetObjResult(interp, objResultPtr); - return TCL_OK; + return code; } /* |