summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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