summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorgriffin <briang42@easystreet.net>2022-10-31 21:50:46 (GMT)
committergriffin <briang42@easystreet.net>2022-10-31 21:50:46 (GMT)
commit028b789aeccfe21a87c0e27fb1fc1af9b972d120 (patch)
tree4f06a2f8f7454ef8096afa4c971d4d2a800b6b0a /generic/tclExecute.c
parentbb6cdd342a877c8e03e5b488e526cef58d57bf16 (diff)
downloadtcl-028b789aeccfe21a87c0e27fb1fc1af9b972d120.zip
tcl-028b789aeccfe21a87c0e27fb1fc1af9b972d120.tar.gz
tcl-028b789aeccfe21a87c0e27fb1fc1af9b972d120.tar.bz2
Add missing GetType call to export decls. Change SetElement to support multiple indicies. Improve abstract list test coverage.
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index ab41550..b066382 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -5027,8 +5027,14 @@ TEBCresume(
* Compute the new variable value.
*/
- objResultPtr = TclLsetFlat(interp, valuePtr, numIndices,
+ if (TclAbstractListHasProc(valuePtr, TCL_ABSL_SLICE)) {
+ objResultPtr = Tcl_AbstractListSetElement(interp,
+ valuePtr, numIndices,
+ &OBJ_AT_DEPTH(numIndices), OBJ_AT_TOS);
+ } else {
+ objResultPtr = TclLsetFlat(interp, valuePtr, numIndices,
&OBJ_AT_DEPTH(numIndices), OBJ_AT_TOS);
+ }
if (!objResultPtr) {
TRACE_ERROR(interp);
goto gotError;
@@ -5149,7 +5155,7 @@ TEBCresume(
fromIdx = TclIndexDecode(fromIdx, objc - 1);
- if (TclHasInternalRep(valuePtr,&tclAbstractListType)) {
+ if (TclAbstractListHasProc(valuePtr, TCL_ABSL_SLICE)) {
if (Tcl_AbstractListObjRange(interp, valuePtr, fromIdx, toIdx, &objResultPtr) != TCL_OK) {
TRACE_ERROR(interp);
goto gotError;