diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionRange.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionRange.java index 1f35d91f8..c8b628724 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionRange.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/versioning/VersionRange.java @@ -66,10 +66,12 @@ public final class VersionRange { } public boolean contains(String versionNumber) { + if (versionNumber == null) return false; return contains(VersionNumber.asVersion(versionNumber)); } public boolean contains(VersionNumber versionNumber) { + if (versionNumber == null) return false; if (isEmpty()) return false; if (isAll()) return true; diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/versioning/VersionRangeTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/versioning/VersionRangeTest.java index 0697cb0cc..0f8ae788d 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/versioning/VersionRangeTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/versioning/VersionRangeTest.java @@ -32,6 +32,17 @@ public class VersionRangeTest { assertTrue(all().contains("0")); assertTrue(all().contains("10")); + + assertFalse(all().contains((String) null)); + assertFalse(empty().contains((String) null)); + assertFalse(between("0", "10").contains((String) null)); + assertFalse(atLeast("10").contains((String) null)); + assertFalse(atMost("10").contains((String) null)); + assertFalse(all().contains((VersionNumber) null)); + assertFalse(empty().contains((VersionNumber) null)); + assertFalse(between("0", "10").contains((VersionNumber) null)); + assertFalse(atLeast("10").contains((VersionNumber) null)); + assertFalse(atMost("10").contains((VersionNumber) null)); } private static void assertIsOverlappedBy(boolean value, VersionRange range1, VersionRange range2) {