Harmony
  1. Harmony
  2. HARMONY-1082

[classlib][io]compatibility:java.io.BufferedOutputStream.write(byte[], int, int) throws ArrayIndexOutOfBoundsException while RI throws NullPointerException

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Trivial Trivial
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      J2SE API specifications for java.io.BufferedOutputStream.write(byte[], int, int) method says "Throws IOException - if an I/O error occurs."
      Spec for the superclass java.io.OutputStream says that "If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown."

      Harmony throws ArrayIndexOutOfBoundsException while RI throws NullPointerException.

      ============== Test9422 .java =====================
      import java.io.BufferedOutputStream;

      public class Test9422 {

      public static void main(String[] argv) {
      BufferedOutputStream localBufferedOutputStream = new BufferedOutputStream(
      null, 1);
      byte[] array0 = new byte[]

      { 2, 2, 2, 2, 2, 2, 2, 2, 2 }

      ;

      try

      { localBufferedOutputStream.write(array0, 127, 1); System.out.println("Test filed!"); }

      catch (IndexOutOfBoundsException e)

      { System.out.println("Test passed: expected " + e); }

      catch (Exception e)

      { System.out.println("Test filed: " + e); }

      try

      { localBufferedOutputStream.write(array0, 5, 17); System.out.println("Test filed!"); }

      catch (IndexOutOfBoundsException e)

      { System.out.println("Test passed: expected " + e); }

      catch (Exception e)

      { System.out.println("Test filed: " + e); }

      try

      { localBufferedOutputStream.write(array0, -1, 5); System.out.println("Test filed!"); }

      catch (IndexOutOfBoundsException e)

      { System.out.println("Test passed: expected " + e); }

      catch (Exception e)

      { System.out.println("Test filed: " + e); }

      try

      { localBufferedOutputStream.write(array0, 1, -5); System.out.println("Test filed!"); }

      catch (IndexOutOfBoundsException e)

      { System.out.println("Test passed: expected " + e); }

      catch (Exception e)

      { System.out.println("Test filed: " + e); }

      }

      }

      ==========================================

      Output:

      Harmony:
      java version "1.5.0"
      pre-alpha : not complete or compatible
      svn = r424571, (Jul 22 2006), Windows/ia32/msvc 1310, release build
      http://incubator.apache.org/harmony

      Test passed: expected java.lang.ArrayIndexOutOfBoundsException: Arguments out of bounds
      Test passed: expected java.lang.ArrayIndexOutOfBoundsException: Arguments out of bounds
      Test passed: expected java.lang.ArrayIndexOutOfBoundsException: Arguments out of bounds
      Test passed: expected java.lang.ArrayIndexOutOfBoundsException: Arguments out of bounds

      RI:
      java version "1.5.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
      BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))

      Test filed: java.lang.NullPointerException
      Test filed: java.lang.NullPointerException
      Test filed: java.lang.NullPointerException
      Test passed: expected java.lang.ArrayIndexOutOfBoundsException

      1. Harmony-1082-2.diff
        11 kB
        Ruth Cao
      2. harmony-1082.diff
        10 kB
        Tony Wu

        Activity

          People

          • Assignee:
            Paulex Yang
            Reporter:
            Ilya Okomin
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development