summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authoraspect <aspect+tclcore@abstracted-spleen.org>2015-02-19 02:34:43 (GMT)
committeraspect <aspect+tclcore@abstracted-spleen.org>2015-02-19 02:34:43 (GMT)
commita3fe56e967acaf42e8fb2180de39428b24fb3ed4 (patch)
tree437c7f1136cd39ced0be486e6e9ada7d6ee63f26 /generic
parentb45286725aeaf89d746d3f7edc0f125a4c0950a3 (diff)
downloadtcl-a3fe56e967acaf42e8fb2180de39428b24fb3ed4.zip
tcl-a3fe56e967acaf42e8fb2180de39428b24fb3ed4.tar.gz
tcl-a3fe56e967acaf42e8fb2180de39428b24fb3ed4.tar.bz2
(core ticket [32b6159246]) Fix for [lreplace l x y] where y<x-1
Diffstat (limited to 'generic')
-rw-r--r--generic/tclCompCmdsGR.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
index e2fb43d..5220576 100644
--- a/generic/tclCompCmdsGR.c
+++ b/generic/tclCompCmdsGR.c
@@ -1524,6 +1524,9 @@ TclCompileLreplaceCmd(
tmpObj = Tcl_NewIntObj(idx1);
Tcl_IncrRefCount(tmpObj);
}
+ if(idx2 < idx1) {
+ idx2 = idx1-1;
+ }
goto dropRange;
}
}
@@ -1547,7 +1550,7 @@ TclCompileLreplaceCmd(
idx1 = 0;
goto replaceTail;
} else {
- if (idx1 > 0 && idx2 > 0 && idx2 < idx1) {
+ if (idx1 >= 0 && idx2 > 0 && idx2 < idx1) {
idx2 = idx1 - 1;
} else if (idx1 < 0 && idx2 < 0 && idx2 < idx1) {
idx2 = idx1 - 1;