|
|
@@ -81,12 +81,28 @@ namespace Usm {
|
|
|
}
|
|
|
|
|
|
public bool greater_than(Version other) {
|
|
|
- var parts = int.min(other.version_nums.length, version_nums.length);
|
|
|
+ var mine = version_nums ?? new int[0];
|
|
|
+ var theirs = other.version_nums ?? new int[0];
|
|
|
+ var parts = int.min(theirs.length, mine.length);
|
|
|
for(int i = 0; i < parts; i++) {
|
|
|
- if(version_nums[i] > other.version_nums[i]) {
|
|
|
+ if(mine[i] > theirs[i]) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if(mine[i] < theirs[i]) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Components only one side has count as zero, so trailing zeros
|
|
|
+ // stay equal (0.1 == 0.1.0) but extra non-zero components make
|
|
|
+ // the longer version newer (0.1.1 > 0.1)
|
|
|
+ var longest = int.max(theirs.length, mine.length);
|
|
|
+ for(int i = parts; i < longest; i++) {
|
|
|
+ var mine_component = i < mine.length ? mine[i] : 0;
|
|
|
+ var theirs_component = i < theirs.length ? theirs[i] : 0;
|
|
|
+ if(mine_component > theirs_component) {
|
|
|
return true;
|
|
|
}
|
|
|
- if(version_nums[i] < other.version_nums[i]) {
|
|
|
+ if(mine_component < theirs_component) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
@@ -104,12 +120,27 @@ namespace Usm {
|
|
|
}
|
|
|
|
|
|
public bool less_than(Version other) {
|
|
|
- var parts = int.min(other.version_nums.length, version_nums.length);
|
|
|
+ var mine = version_nums ?? new int[0];
|
|
|
+ var theirs = other.version_nums ?? new int[0];
|
|
|
+ var parts = int.min(theirs.length, mine.length);
|
|
|
for(int i = 0; i < parts; i++) {
|
|
|
- if(version_nums[i] < other.version_nums[i]) {
|
|
|
+ if(mine[i] < theirs[i]) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if(mine[i] > theirs[i]) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Components only one side has count as zero, mirroring
|
|
|
+ // {@link greater_than}
|
|
|
+ var longest = int.max(theirs.length, mine.length);
|
|
|
+ for(int i = parts; i < longest; i++) {
|
|
|
+ var mine_component = i < mine.length ? mine[i] : 0;
|
|
|
+ var theirs_component = i < theirs.length ? theirs[i] : 0;
|
|
|
+ if(mine_component < theirs_component) {
|
|
|
return true;
|
|
|
}
|
|
|
- if(version_nums[i] > other.version_nums[i]) {
|
|
|
+ if(mine_component > theirs_component) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|