summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgriffin <briang42@easystreet.net>2022-09-29 16:10:07 (GMT)
committergriffin <briang42@easystreet.net>2022-09-29 16:10:07 (GMT)
commitbec96305308d0c234215d25b194f1ff8417dc8b4 (patch)
treea6a87e6d8c544f1ce5315090b52d0e6bcc73267b
parent42bd6877bcc8794524e5be946458a4427994b7a6 (diff)
downloadtcl-bec96305308d0c234215d25b194f1ff8417dc8b4.zip
tcl-bec96305308d0c234215d25b194f1ff8417dc8b4.tar.gz
tcl-bec96305308d0c234215d25b194f1ff8417dc8b4.tar.bz2
Fix bug-99e834bf33
-rw-r--r--generic/tclExecute.c2
-rw-r--r--tests/lseq.test10
2 files changed, 11 insertions, 1 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 5f29bfa..fa0dfa2 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -4938,7 +4938,7 @@ TEBCresume(
/* Decode end-offset index values. */
- index = TclIndexDecode(opnd, length);
+ index = TclIndexDecode(opnd, length-1);
/* Compute value @ index */
if (index >= 0 && index < length) {
diff --git a/tests/lseq.test b/tests/lseq.test
index e05b32d..518a7bb 100644
--- a/tests/lseq.test
+++ b/tests/lseq.test
@@ -489,9 +489,19 @@ test lseq-4.4 {lseq corner case} -body {
lappend res $s $e
}
eval $tcmd
+} -cleanup {
+ unset res
} -result {0 10 1 {max length of a Tcl list exceeded} 1 {max length of a Tcl list exceeded} 0 10 0 2147483638}
+# Ticket 99e834bf33 - lseq, lindex end off by one
+
+test lseq-4.5 {lindex off by one} -body {
+ lappend res [eval {lindex [lseq 1 4] end}]
+ lappend res [eval {lindex [lseq 1 4] end-1}]
+} -result {4 3}
+
+
# cleanup
::tcltest::cleanupTests
return