]> Cypherpunks.ru repositories - gostls13.git/commitdiff
time: make Ticker.Reset(0) panic
authorzhouguangyuan <zhouguangyuan.xian@gmail.com>
Wed, 3 Nov 2021 14:23:29 +0000 (22:23 +0800)
committerEmmanuel Odeke <emmanuel@orijtech.com>
Fri, 5 Nov 2021 21:13:38 +0000 (21:13 +0000)
Fixes #49315

Change-Id: I0887bad1059b25ae0749bfa1ed6ddccbecca7951
Reviewed-on: https://go-review.googlesource.com/c/go/+/361074
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
src/time/tick.go
src/time/tick_test.go

index f9522b0b754ad6c2566b0e04cb45fd856a7857b5..babf865aeb086bafbe85eecefd290db1ecf1acc6 100644 (file)
@@ -48,8 +48,12 @@ func (t *Ticker) Stop() {
 }
 
 // Reset stops a ticker and resets its period to the specified duration.
-// The next tick will arrive after the new period elapses.
+// The next tick will arrive after the new period elapses. The duration d
+// must be greater than zero; if not, Reset will panic.
 func (t *Ticker) Reset(d Duration) {
+       if d <= 0 {
+               panic("non-positive interval for Ticker.Reset")
+       }
        if t.r.f == nil {
                panic("time: Reset called on uninitialized Ticker")
        }
index d8cd59228f0fd47adf01273d384fd48a876f44c4..f539091869fcaf2f06bde50954608d2a229ee79c 100644 (file)
@@ -134,6 +134,17 @@ func TestNewTickerLtZeroDuration(t *testing.T) {
        NewTicker(-1)
 }
 
+// Test that Ticker.Reset panics when given a duration less than zero.
+func TestTickerResetLtZeroDuration(t *testing.T) {
+       defer func() {
+               if err := recover(); err == nil {
+                       t.Errorf("Ticker.Reset(0) should have panicked")
+               }
+       }()
+       tk := NewTicker(Second)
+       tk.Reset(0)
+}
+
 func BenchmarkTicker(b *testing.B) {
        benchmark(b, func(n int) {
                ticker := NewTicker(Nanosecond)