Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-1082

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Trivial
    • Resolution: Fixed
    • None
    • None
    • None
    • 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

      Attachments

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

        Activity

          People

            paulex Paulex Yang
            ilya.okomin Ilya Okomin
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: