diff options
author | griffin <briang42@easystreet.net> | 2022-10-07 19:14:18 (GMT) |
---|---|---|
committer | griffin <briang42@easystreet.net> | 2022-10-07 19:14:18 (GMT) |
commit | af613a176f8bf6b6910be340b95f66f220259593 (patch) | |
tree | 9d80da59966061b3966c15b0df54f605920f2f71 /generic/tclExecute.c | |
parent | 9ed6390f05a3a38dd7308a1836aa063b7401caf4 (diff) | |
parent | 9dd5a63f35590c88db321bf5f70429c61ed5a3b5 (diff) | |
download | tcl-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.c | 13 |
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 { |