@@ -6,7 +6,6 @@ package version
6
6
import (
7
7
"bytes"
8
8
"fmt"
9
- "reflect"
10
9
"regexp"
11
10
"strconv"
12
11
"strings"
@@ -120,11 +119,8 @@ func (v *Version) Compare(other *Version) int {
120
119
return 0
121
120
}
122
121
123
- segmentsSelf := v .Segments64 ()
124
- segmentsOther := other .Segments64 ()
125
-
126
122
// If the segments are the same, we must compare on prerelease info
127
- if reflect . DeepEqual ( segmentsSelf , segmentsOther ) {
123
+ if v . equalSegments ( other ) {
128
124
preSelf := v .Prerelease ()
129
125
preOther := other .Prerelease ()
130
126
if preSelf == "" && preOther == "" {
@@ -140,6 +136,8 @@ func (v *Version) Compare(other *Version) int {
140
136
return comparePrereleases (preSelf , preOther )
141
137
}
142
138
139
+ segmentsSelf := v .Segments64 ()
140
+ segmentsOther := other .Segments64 ()
143
141
// Get the highest specificity (hS), or if they're equal, just use segmentSelf length
144
142
lenSelf := len (segmentsSelf )
145
143
lenOther := len (segmentsOther )
@@ -183,6 +181,21 @@ func (v *Version) Compare(other *Version) int {
183
181
return 0
184
182
}
185
183
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
+
186
199
func allZero (segs []int64 ) bool {
187
200
for _ , s := range segs {
188
201
if s != 0 {
0 commit comments