func (v XenVersion) parse() (major, minor int, err error) {
if v == "master" {
- return math.MaxInt64, 0, nil
+ // NB if Xen's major ever exceeds 2 billion, we'll
+ // need to deprecate the 32-bit build of this tool.
+ return math.MaxInt32, 0, nil
}
major = -1
}
major, err = strconv.Atoi(submatch[1])
- if err == nil {
- minor, err = strconv.Atoi(submatch[2])
+ if err != nil {
+ return
}
+
+ if major > math.MaxInt32 {
+ err = fmt.Errorf("Version too large")
+ major = -1
+ return
+ }
+
+ minor, err = strconv.Atoi(submatch[2])
+
return
}
return v.gt(v2, false)
}
-func (v XenVersion) PrevVersion() (next XenVersion, err error) {
+func (v XenVersion) PrevVersiongit () (next XenVersion, err error) {
major, minor, err := v.parse()
if err != nil {
err = fmt.Errorf("Parsing version %v: %v\n", v, err)