BUG FIXED: RoundRobinCounter.Add will cause a out of range crash
when index >= len(rrc.Values)
This commit is contained in:
@@ -23,14 +23,11 @@ func NewRoundRobinCounter(slots int) *RoundRobinCounter {
|
||||
return &RoundRobinCounter{LastIndex: -1, Values: make([]int64, slots), Counts: make([]int64, slots)}
|
||||
}
|
||||
func (rrc *RoundRobinCounter) Add(index int, val int64) {
|
||||
if index >= len(rrc.Values) {
|
||||
return
|
||||
}
|
||||
for rrc.LastIndex != index {
|
||||
rrc.LastIndex++
|
||||
if rrc.LastIndex >= len(rrc.Values) {
|
||||
if index >= len(rrc.Values) {
|
||||
break //just avoid endless loop
|
||||
}
|
||||
rrc.LastIndex = 0
|
||||
}
|
||||
rrc.LastIndex = (rrc.LastIndex + 1) % len(rrc.Values)
|
||||
rrc.Values[rrc.LastIndex] = 0
|
||||
rrc.Counts[rrc.LastIndex] = 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user