@@ -6,7 +6,6 @@ package version
66import (
77 "bytes"
88 "fmt"
9- "reflect"
109 "regexp"
1110 "strconv"
1211 "strings"
@@ -120,11 +119,8 @@ func (v *Version) Compare(other *Version) int {
120119 return 0
121120 }
122121
123- segmentsSelf := v .Segments64 ()
124- segmentsOther := other .Segments64 ()
125-
126122 // If the segments are the same, we must compare on prerelease info
127- if reflect . DeepEqual ( segmentsSelf , segmentsOther ) {
123+ if v . equalSegments ( other ) {
128124 preSelf := v .Prerelease ()
129125 preOther := other .Prerelease ()
130126 if preSelf == "" && preOther == "" {
@@ -140,6 +136,8 @@ func (v *Version) Compare(other *Version) int {
140136 return comparePrereleases (preSelf , preOther )
141137 }
142138
139+ segmentsSelf := v .Segments64 ()
140+ segmentsOther := other .Segments64 ()
143141 // Get the highest specificity (hS), or if they're equal, just use segmentSelf length
144142 lenSelf := len (segmentsSelf )
145143 lenOther := len (segmentsOther )
@@ -183,6 +181,21 @@ func (v *Version) Compare(other *Version) int {
183181 return 0
184182}
185183
184+ func (v * Version ) equalSegments (other * Version ) bool {
185+ segmentsSelf := v .Segments64 ()
186+ segmentsOther := other .Segments64 ()
187+
188+ if len (segmentsSelf ) != len (segmentsOther ) {
189+ return false
190+ }
191+ for i , v := range segmentsSelf {
192+ if v != segmentsOther [i ] {
193+ return false
194+ }
195+ }
196+ return true
197+ }
198+
186199func allZero (segs []int64 ) bool {
187200 for _ , s := range segs {
188201 if s != 0 {
0 commit comments