jdk/src/share/classes/java/io/SequenceInputStream.java
changeset 23344 70f819173479
parent 14342 8435a30053c1
child 24865 09b1d992ca72
--- a/jdk/src/share/classes/java/io/SequenceInputStream.java	Thu Mar 13 07:24:12 2014 +0400
+++ b/jdk/src/share/classes/java/io/SequenceInputStream.java	Thu Mar 13 07:52:17 2014 +0400
@@ -135,7 +135,7 @@
      * @since   JDK1.1
      */
     public int available() throws IOException {
-        if(in == null) {
+        if (in == null) {
             return 0; // no way to signal EOF from available()
         }
         return in.available();
@@ -160,15 +160,14 @@
      * @exception  IOException  if an I/O error occurs.
      */
     public int read() throws IOException {
-        if (in == null) {
-            return -1;
+        while (in != null) {
+            int c = in.read();
+            if (c != -1) {
+                return c;
+            }
+            nextStream();
         }
-        int c = in.read();
-        if (c == -1) {
-            nextStream();
-            return read();
-        }
-        return c;
+        return -1;
     }
 
     /**
@@ -204,13 +203,14 @@
         } else if (len == 0) {
             return 0;
         }
-
-        int n = in.read(b, off, len);
-        if (n <= 0) {
+        do {
+            int n = in.read(b, off, len);
+            if (n > 0) {
+                return n;
+            }
             nextStream();
-            return read(b, off, len);
-        }
-        return n;
+        } while (in != null);
+        return -1;
     }
 
     /**