diff options
author | griffin <briang42@easystreet.net> | 2022-10-31 21:50:46 (GMT) |
---|---|---|
committer | griffin <briang42@easystreet.net> | 2022-10-31 21:50:46 (GMT) |
commit | 028b789aeccfe21a87c0e27fb1fc1af9b972d120 (patch) | |
tree | 4f06a2f8f7454ef8096afa4c971d4d2a800b6b0a /generic/tclExecute.c | |
parent | bb6cdd342a877c8e03e5b488e526cef58d57bf16 (diff) | |
download | tcl-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.c | 10 |
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; |