Hello.

Please review this simple fix for

   6990094 "ObjectInputStream cloneArray doesn't handle short[]"
   http://cr.openjdk.java.net/~darcy/6990094.0/

The complete patch is

--- old/src/share/classes/java/io/ObjectInputStream.java 2010-12-03 00:31:24.000000000 -0800 +++ new/src/share/classes/java/io/ObjectInputStream.java 2010-12-03 00:31:24.000000000 -0800
@@ -3498,8 +3498,8 @@
            return ((int[]) array).clone();
        } else if (array instanceof long[]) {
            return ((long[]) array).clone();
-        } else if (array instanceof double[]) {
-            return ((double[]) array).clone();
+        } else if (array instanceof short[]) {
+            return ((short[]) array).clone();
        } else {
            throw new AssertionError();
        }

You'll notice there is no regression test for this change. One justification is that the fix is in the "obviously no bugs" category. [1] There is an if-else instanceof chain over Object arrays and arrays of each primitive type; there are two checks for double and none for short so changing the one of the double checks to short is "obviously correct." Also, I've taken a stab a writing an explicit regression test for this condition, but the problem only manifests in cases beyond my direct serialization experience where a class has overridden the readUnshared method.

-Joe

[1] "There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies." C.A.R. Hoare]

Reply via email to