diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-10-07 22:49:27 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-10-07 22:49:27 (GMT) |
| commit | 9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9 (patch) | |
| tree | 6870966777dbd8c9f443f6aa015af4e46b739a8a /generic/tclExecute.c | |
| parent | d347d3e4ffe6c51e5c8daeaa742632a392f60357 (diff) | |
| parent | 2799ad9f6c20f61947f9ab30a8a884a0d2e359a6 (diff) | |
| download | tcl-9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9.zip tcl-9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9.tar.gz tcl-9f59ec07c0f380bd4766fd9f2c54afebfe44c1f9.tar.bz2 | |
Merge tip-346
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 15 |
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 { |
