1
0
mirror of https://github.com/divan/expvarmon.git synced 2025-04-25 13:48:54 +08:00

fix panic occurs when using Float value

This commit is contained in:
Hideo Hattori 2015-09-25 17:18:46 +09:00
parent 63bb111ee8
commit b33870f09c
2 changed files with 33 additions and 2 deletions

View File

@ -35,12 +35,36 @@ func (s *Stack) Push(val VarValue) {
switch val.(type) {
case int64:
if s.Max == nil || val.(int64) > s.Max.(int64) {
if s.Max == nil {
s.Max = val
return
}
switch s.Max.(type) {
case int64:
if val.(int64) > s.Max.(int64) {
s.Max = val
}
case float64:
if float64(val.(int64)) > s.Max.(float64) {
s.Max = val
}
}
case float64:
if s.Max == nil || val.(float64) > s.Max.(float64) {
if s.Max == nil {
s.Max = val
return
}
switch s.Max.(type) {
case int64:
if val.(float64) > float64(s.Max.(int64)) {
s.Max = val
}
case float64:
if val.(float64) > s.Max.(float64) {
s.Max = val
}
}
}
}

View File

@ -2,6 +2,13 @@ package main
import "testing"
func TestPushWithFloatAndIntValue(t *testing.T) {
s := NewStack()
s.Push(VarValue(int64(0.0))) // from service.go:guessValue
s.Push(VarValue(5.0))
s.Push(VarValue(float64(15.0)))
}
func TestStack(t *testing.T) {
size := 10
s := NewStackWithSize(size)