summaryrefslogtreecommitdiffstats
path: root/generic/tclCompCmdsSZ.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2013-10-03 13:32:06 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2013-10-03 13:32:06 (GMT)
commitf9427cdbfd828dbabe79facdc3d757146c090563 (patch)
tree0fc8c55a7c7074e884924430835fce4b9eaeabcc /generic/tclCompCmdsSZ.c
parentc9e288f12b7d1802ea33bb58cc546f1a1ce153e1 (diff)
downloadtcl-f9427cdbfd828dbabe79facdc3d757146c090563.zip
tcl-f9427cdbfd828dbabe79facdc3d757146c090563.tar.gz
tcl-f9427cdbfd828dbabe79facdc3d757146c090563.tar.bz2
cleaner and faster 'string trim'
Diffstat (limited to 'generic/tclCompCmdsSZ.c')
-rw-r--r--generic/tclCompCmdsSZ.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index 0177b2d..12f6167 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -739,7 +739,6 @@ TclCompileStringTrimCmd(
{
DefineLineInformation; /* TIP #280 */
Tcl_Token *tokenPtr;
- Tcl_Obj *objPtr;
if (parsePtr->numWords != 2 && parsePtr->numWords != 3) {
return TCL_ERROR;
@@ -749,30 +748,11 @@ TclCompileStringTrimCmd(
CompileWord(envPtr, tokenPtr, interp, 1);
if (parsePtr->numWords == 3) {
tokenPtr = TokenAfter(tokenPtr);
- TclNewObj(objPtr);
- if (TclWordKnownAtCompileTime(tokenPtr, objPtr)) {
- int len;
- const char *p = Tcl_GetStringFromObj(objPtr, &len);
-
- PushLiteral(envPtr, p, len);
- OP( STRTRIM_LEFT);
- PushLiteral(envPtr, p, len);
- OP( STRTRIM_RIGHT);
- } else {
- CompileWord(envPtr, tokenPtr, interp, 2);
- OP4( REVERSE, 2);
- OP4( OVER, 1);
- OP( STRTRIM_LEFT);
- OP4( REVERSE, 2);
- OP( STRTRIM_RIGHT);
- }
- TclDecrRefCount(objPtr);
+ CompileWord(envPtr, tokenPtr, interp, 2);
} else {
PushLiteral(envPtr, DEFAULT_TRIM_SET, strlen(DEFAULT_TRIM_SET));
- OP( STRTRIM_LEFT);
- PushLiteral(envPtr, DEFAULT_TRIM_SET, strlen(DEFAULT_TRIM_SET));
- OP( STRTRIM_RIGHT);
}
+ OP( STRTRIM);
return TCL_OK;
}