summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorgriffin <briang42@easystreet.net>2022-10-07 19:14:18 (GMT)
committergriffin <briang42@easystreet.net>2022-10-07 19:14:18 (GMT)
commitaf613a176f8bf6b6910be340b95f66f220259593 (patch)
tree9d80da59966061b3966c15b0df54f605920f2f71 /generic/tclExecute.c
parent9ed6390f05a3a38dd7308a1836aa063b7401caf4 (diff)
parent9dd5a63f35590c88db321bf5f70429c61ed5a3b5 (diff)
downloadtcl-af613a176f8bf6b6910be340b95f66f220259593.zip
tcl-af613a176f8bf6b6910be340b95f66f220259593.tar.gz
tcl-af613a176f8bf6b6910be340b95f66f220259593.tar.bz2
Sync with core-8-branch
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index d876927..e281942 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -4880,7 +4880,8 @@ TEBCresume(
TRACE_ERROR(interp);
goto gotError;
}
- objResultPtr = typePtr->indexProc(valuePtr, index);
+ typePtr->indexProc(valuePtr, index, &objResultPtr);
+ Tcl_IncrRefCount(objResultPtr); // reference held here
goto lindexDone;
}
@@ -4943,11 +4944,11 @@ TEBCresume(
/* Decode end-offset index values. */
- index = TclIndexDecode(opnd, length);
+ index = TclIndexDecode(opnd, length-1);
/* Compute value @ index */
if (index >= 0 && index < length) {
- objResultPtr = typePtr->indexProc(valuePtr, index);
+ typePtr->indexProc(valuePtr, index, &objResultPtr);
} else {
TclNewObj(objResultPtr);
}
@@ -5187,7 +5188,11 @@ TEBCresume(
*/
do {
- Tcl_ListObjIndex(NULL, value2Ptr, i, &o);
+ if (isAbstractList) {
+ Tcl_AbstractListObjIndex(value2Ptr, i, &o);
+ } else {
+ Tcl_ListObjIndex(NULL, value2Ptr, i, &o);
+ }
if (o != NULL) {
s2 = TclGetStringFromObj(o, &s2len);
} else {