summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-10-07 22:49:27 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-10-07 22:49:27 (GMT)
commit9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9 (patch)
tree6870966777dbd8c9f443f6aa015af4e46b739a8a /generic/tclExecute.c
parentd347d3e4ffe6c51e5c8daeaa742632a392f60357 (diff)
parent2799ad9f6c20f61947f9ab30a8a884a0d2e359a6 (diff)
downloadtcl-9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9.zip
tcl-9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9.tar.gz
tcl-9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9.tar.bz2
Merge tip-346
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index f8d5493..7c7bbfd 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -4883,6 +4883,7 @@ TEBCresume(
TRACE_ERROR(interp);
goto gotError;
}
+ Tcl_IncrRefCount(objResultPtr); // reference held here
goto lindexDone;
}
@@ -4938,7 +4939,7 @@ TEBCresume(
/* Decode end-offset index values. */
- index = TclIndexDecode(opnd, length);
+ index = TclIndexDecode(opnd, length-1);
/* Compute value @ index */
if (index >= 0 && index < length) {
@@ -5154,7 +5155,11 @@ TEBCresume(
fromIdx = TclIndexDecode(fromIdx, objc - 1);
if (TclHasInternalRep(valuePtr,&tclArithSeriesType)) {
- objResultPtr = TclArithSeriesObjRange(valuePtr, fromIdx, toIdx);
+ objResultPtr = TclArithSeriesObjRange(interp, valuePtr, fromIdx, toIdx);
+ if (objResultPtr == NULL) {
+ TRACE_ERROR(interp);
+ goto gotError;
+ }
} else {
objResultPtr = TclListObjRange(valuePtr, fromIdx, toIdx);
}
@@ -5183,7 +5188,11 @@ TEBCresume(
*/
do {
- Tcl_ListObjIndex(NULL, value2Ptr, i, &o);
+ if (isArithSeries) {
+ TclArithSeriesObjIndex(value2Ptr, i, &o);
+ } else {
+ Tcl_ListObjIndex(NULL, value2Ptr, i, &o);
+ }
if (o != NULL) {
s2 = TclGetStringFromObj(o, &s2len);
} else {