Index: src/test/java/tests/api/java/io/BufferedInputStreamTest.java =================================================================== --- src/test/java/tests/api/java/io/BufferedInputStreamTest.java (revision 489636) +++ src/test/java/tests/api/java/io/BufferedInputStreamTest.java (working copy) @@ -41,10 +41,11 @@ public String fileString = "Test_All_Tests\nTest_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\nTest_java_io_File\nTest_java_io_FileDescriptor\nTest_java_io_FileInputStream\nTest_java_io_FileNotFoundException\nTest_java_io_FileOutputStream\nTest_java_io_FilterInputStream\nTest_java_io_FilterOutputStream\nTest_java_io_InputStream\nTest_java_io_IOException\nTest_java_io_OutputStream\nTest_java_io_PrintStream\nTest_java_io_RandomAccessFile\nTest_java_io_SyncFailedException\nTest_java_lang_AbstractMethodError\nTest_java_lang_ArithmeticException\nTest_java_lang_ArrayIndexOutOfBoundsException\nTest_java_lang_ArrayStoreException\nTest_java_lang_Boolean\nTest_java_lang_Byte\nTest_java_lang_Character\nTest_java_lang_Class\nTest_java_lang_ClassCastException\nTest_java_lang_ClassCircularityError\nTest_java_lang_ClassFormatError\nTest_java_lang_ClassLoader\nTest_java_lang_ClassNotFoundException\nTest_java_lang_CloneNotSupportedException\nTest_java_lang_Double\nTest_java_lang_Error\nTest_java_lang_Exception\nTest_java_lang_ExceptionInInitializerError\nTest_java_lang_Float\nTest_java_lang_IllegalAccessError\nTest_java_lang_IllegalAccessException\nTest_java_lang_IllegalArgumentException\nTest_java_lang_IllegalMonitorStateException\nTest_java_lang_IllegalThreadStateException\nTest_java_lang_IncompatibleClassChangeError\nTest_java_lang_IndexOutOfBoundsException\nTest_java_lang_InstantiationError\nTest_java_lang_InstantiationException\nTest_java_lang_Integer\nTest_java_lang_InternalError\nTest_java_lang_InterruptedException\nTest_java_lang_LinkageError\nTest_java_lang_Long\nTest_java_lang_Math\nTest_java_lang_NegativeArraySizeException\nTest_java_lang_NoClassDefFoundError\nTest_java_lang_NoSuchFieldError\nTest_java_lang_NoSuchMethodError\nTest_java_lang_NullPointerException\nTest_java_lang_Number\nTest_java_lang_NumberFormatException\nTest_java_lang_Object\nTest_java_lang_OutOfMemoryError\nTest_java_lang_RuntimeException\nTest_java_lang_SecurityManager\nTest_java_lang_Short\nTest_java_lang_StackOverflowError\nTest_java_lang_String\nTest_java_lang_StringBuffer\nTest_java_lang_StringIndexOutOfBoundsException\nTest_java_lang_System\nTest_java_lang_Thread\nTest_java_lang_ThreadDeath\nTest_java_lang_ThreadGroup\nTest_java_lang_Throwable\nTest_java_lang_UnknownError\nTest_java_lang_UnsatisfiedLinkError\nTest_java_lang_VerifyError\nTest_java_lang_VirtualMachineError\nTest_java_lang_vm_Image\nTest_java_lang_vm_MemorySegment\nTest_java_lang_vm_ROMStoreException\nTest_java_lang_vm_VM\nTest_java_lang_Void\nTest_java_net_BindException\nTest_java_net_ConnectException\nTest_java_net_DatagramPacket\nTest_java_net_DatagramSocket\nTest_java_net_DatagramSocketImpl\nTest_java_net_InetAddress\nTest_java_net_NoRouteToHostException\nTest_java_net_PlainDatagramSocketImpl\nTest_java_net_PlainSocketImpl\nTest_java_net_Socket\nTest_java_net_SocketException\nTest_java_net_SocketImpl\nTest_java_net_SocketInputStream\nTest_java_net_SocketOutputStream\nTest_java_net_UnknownHostException\nTest_java_util_ArrayEnumerator\nTest_java_util_Date\nTest_java_util_EventObject\nTest_java_util_HashEnumerator\nTest_java_util_Hashtable\nTest_java_util_Properties\nTest_java_util_ResourceBundle\nTest_java_util_tm\nTest_java_util_Vector\n"; /** + * @throws IOException * @tests java.io.BufferedInputStream#BufferedInputStream(java.io.InputStream, * int) */ - public void test_ConstructorLjava_io_InputStreamI() { + public void test_ConstructorLjava_io_InputStreamI() throws IOException { // Test for method java.io.BufferedInputStream(java.io.InputStream, int) boolean exceptionFired = false; try { @@ -72,8 +73,28 @@ } catch (IOException e) { fail("Exception during test_1_Constructor"); } + + // regression test for harmony-2407 + new testBufferedInputStream(null); + assertNotNull(testBufferedInputStream.buf); + testBufferedInputStream.buf = null; + new testBufferedInputStream(null, 100); + assertNotNull(testBufferedInputStream.buf); } + + static class testBufferedInputStream extends BufferedInputStream { + static byte[] buf; + testBufferedInputStream(InputStream is) throws IOException { + super(is); + buf = super.buf; + } + testBufferedInputStream(InputStream is, int size) throws IOException { + super(is, size); + buf = super.buf; + } + } + /** * @tests java.io.BufferedInputStream#available() */ Index: src/main/java/java/io/BufferedInputStream.java =================================================================== --- src/main/java/java/io/BufferedInputStream.java (revision 489636) +++ src/main/java/java/io/BufferedInputStream.java (working copy) @@ -67,7 +67,7 @@ */ public BufferedInputStream(InputStream in) { super(in); - buf = (in == null) ? null : new byte[8192]; + buf = new byte[8192]; } /** @@ -86,7 +86,7 @@ // K0058=size must be > 0 throw new IllegalArgumentException(Msg.getString("K0058")); //$NON-NLS-1$ } - buf = (in == null) ? null : new byte[size]; + buf = new byte[size]; } /** @@ -200,7 +200,7 @@ */ @Override public synchronized int read() throws IOException { - if (buf == null) { + if (in == null) { // K0059=Stream is closed throw new IOException(Msg.getString("K0059")); //$NON-NLS-1$ }