diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-06-14 14:22:49 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-06-14 14:22:49 (GMT) |
commit | 53b781dbd0eef3e429b956fd113213991100d0f5 (patch) | |
tree | 34276bf9889514030333e118fff5a68498f77e0c /generic | |
parent | 280a42a6d768106ad592bd965d75bd0c57c12f72 (diff) | |
parent | d2cb5714faa8e3c9f583924a3f9a345d915aadd9 (diff) | |
download | tcl-53b781dbd0eef3e429b956fd113213991100d0f5.zip tcl-53b781dbd0eef3e429b956fd113213991100d0f5.tar.gz tcl-53b781dbd0eef3e429b956fd113213991100d0f5.tar.bz2 |
Merge 8.6
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclStringObj.c | 2 | ||||
-rw-r--r-- | generic/tclTestObj.c | 18 |
2 files changed, 16 insertions, 4 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 2fbf854..13d91d9 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -1046,7 +1046,7 @@ Tcl_GetRange( int numChars = Tcl_NumUtfChars(objPtr->bytes, objPtr->length); - if (last >= numChars) { + if (last < 0 || last >= numChars) { last = numChars - 1; } if (last < first) { diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 223eb98..a03a60a 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -1164,7 +1164,7 @@ TeststringobjCmd( Tcl_Obj **varPtr; static const char *const options[] = { "append", "appendstrings", "get", "get2", "length", "length2", - "set", "set2", "setlength", "maxchars", "appendself", + "set", "set2", "setlength", "maxchars", "range", "appendself", "appendself2", NULL }; @@ -1335,7 +1335,19 @@ TeststringobjCmd( } Tcl_SetWideIntObj(Tcl_GetObjResult(interp), length); break; - case 10: /* appendself */ + case 10: { /* range */ + int first, last; + if (objc != 5) { + goto wrongNumArgs; + } + if ((Tcl_GetIntFromObj(interp, objv[3], &first) != TCL_OK) + || (Tcl_GetIntFromObj(interp, objv[4], &last) != TCL_OK)) { + return TCL_ERROR; + } + Tcl_SetObjResult(interp, Tcl_GetRange(varPtr[varIndex], first, last)); + break; + } + case 11: /* appendself */ if (objc != 4) { goto wrongNumArgs; } @@ -1366,7 +1378,7 @@ TeststringobjCmd( Tcl_AppendToObj(varPtr[varIndex], string + length, size - length); Tcl_SetObjResult(interp, varPtr[varIndex]); break; - case 11: /* appendself2 */ + case 12: /* appendself2 */ if (objc != 4) { goto wrongNumArgs; } |