summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgahr <gahr@gahr.ch>2016-02-23 16:31:18 (GMT)
committergahr <gahr@gahr.ch>2016-02-23 16:31:18 (GMT)
commite644c2cde0ad8530628e57c4dba5797fc5ff3b85 (patch)
treed1d7688693a4d47297d51538354f9ea9b606dad6
parent03dd6c13603af9d6792030412f52d942fc2eaefd (diff)
downloadtcl-e644c2cde0ad8530628e57c4dba5797fc5ff3b85.zip
tcl-e644c2cde0ad8530628e57c4dba5797fc5ff3b85.tar.gz
tcl-e644c2cde0ad8530628e57c4dba5797fc5ff3b85.tar.bz2
Make sure that adding 0 weekdays doesn't result in going back in time
-rwxr-xr-xlibrary/clock.tcl4
-rw-r--r--tests/clock.test7
2 files changed, 10 insertions, 1 deletions
diff --git a/library/clock.tcl b/library/clock.tcl
index 231f1ae..535a67d 100755
--- a/library/clock.tcl
+++ b/library/clock.tcl
@@ -4449,6 +4449,10 @@ proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
proc ::tcl::clock::AddWeekDays { days clockval timezone changeover } {
+ if {$days == 0} {
+ return $clockval
+ }
+
set day [format $clockval -format %u]
set weeks [expr {$days / 5}]
diff --git a/tests/clock.test b/tests/clock.test
index fc7992d..0b26213 100644
--- a/tests/clock.test
+++ b/tests/clock.test
@@ -35237,7 +35237,12 @@ test clock-30.28 {clock add weekdays starting on Sunday} {
set f1 [clock add $t 1 weekday]
set x1 [clock format $f1 -format {%Y-%m-%d}]
} {2013-11-25}
-test clock-30.29 {clock add weekdays systematic} -body {
+test clock-30.29 {clock add 0 weekdays starting on a weekend} {
+ set t [clock scan {2016-02-27}] ;# Saturday
+ set f1 [clock add $t 0 weekdays]
+ set x1 [clock format $f1 -format {%Y-%m-%d}]
+} {2016-02-27}
+test clock-30.30 {clock add weekdays systematic} -body {
set n [clock seconds]
set d [clock format $n -format %u]
for {set i 1} {$i < 100} {incr i} {