8176882: Incorrect integer comparison in version numbers
authorprappo
Thu, 16 Mar 2017 22:58:13 +0000
changeset 44272 4d16899cb312
parent 44271 ec5e5a38ef89
child 44273 a2e3e08c5468
8176882: Incorrect integer comparison in version numbers Reviewed-by: psandoz
jdk/src/java.base/share/classes/java/lang/Runtime.java
jdk/test/java/lang/Runtime/Version/Basic.java
--- a/jdk/src/java.base/share/classes/java/lang/Runtime.java	Thu Mar 16 16:56:29 2017 -0400
+++ b/jdk/src/java.base/share/classes/java/lang/Runtime.java	Thu Mar 16 22:58:13 2017 +0000
@@ -1337,14 +1337,12 @@
             int oSize = ob.version().size();
             int min = Math.min(size, oSize);
             for (int i = 0; i < min; i++) {
-                Integer val = version.get(i);
-                Integer oVal = ob.version().get(i);
+                int val = version.get(i);
+                int oVal = ob.version().get(i);
                 if (val != oVal)
                     return val - oVal;
             }
-            if (size != oSize)
-                return size - oSize;
-            return 0;
+            return size - oSize;
         }
 
         private int comparePre(Version ob) {
--- a/jdk/test/java/lang/Runtime/Version/Basic.java	Thu Mar 16 16:56:29 2017 -0400
+++ b/jdk/test/java/lang/Runtime/Version/Basic.java	Thu Mar 16 22:58:13 2017 +0000
@@ -129,6 +129,9 @@
         testEHC("9",          "10",               false, false, -1,   -1);
         testEHC("9",          "8",                false, false,  1,    1);
 
+        testEHC("10.512.1",   "10.512.2",         false, false, -1,   -1);
+        testEHC("512.10.1",   "512.11.1",         false, false, -1,   -1);
+
         // $OPT comparison
         testEHC("9",          "9+-oink",          false, true,  -1,    0);
         testEHC("9+-ribbit",  "9+-moo",           false, true,   1,    0);