Index: ../../incubator-johnzon/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- ../../incubator-johnzon/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java	(revision b7948d5174018ddf04c95a4abd8107720d20155e)
+++ ../../incubator-johnzon/johnzon-core/src/test/java/org/apache/johnzon/core/JsonParserTest.java	(revision )
@@ -1049,8 +1049,31 @@
   
         assertEquals("\"abcdef", Json.createReader(new ByteArrayInputStream("[\"\\\"abcdef\"]".getBytes())).readArray().getString(0));
     }
-    
+
     @Test
+    public void testSlowIs() {
+        // using a reader as wrapper of parser
+        class SlowIs extends ByteArrayInputStream {
+            private boolean returnZero = true;
+
+            SlowIs() {
+                super("[\"\\\"abcdef\"]".getBytes());
+            }
+
+            @Override
+            public synchronized int read(byte[] b, int off, int len) {
+                if (returnZero) {
+                    returnZero = false;
+                    return 0;
+                }
+                return super.read(b, off, len);
+            }
+        }
+
+        assertEquals("\"abcdef", Json.createReader(new SlowIs()).readArray().getString(0));
+    }
+    
+    @Test
     public void threeLiterals() {
         final JsonParser parser = Json.createParserFactory(new HashMap<String, Object>() {{
             put(JsonParserFactoryImpl.MAX_STRING_LENGTH, 10);
Index: ../../incubator-johnzon/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- ../../incubator-johnzon/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java	(revision b7948d5174018ddf04c95a4abd8107720d20155e)
+++ ../../incubator-johnzon/johnzon-core/src/main/java/org/apache/johnzon/core/JsonStreamParserImpl.java	(revision )
@@ -249,7 +249,7 @@
     //refill is neccessary copy the already readed value part into the value buffer
     private char readNextChar() {
 
-        if ((buffer.length - bufferPos) <= 1) {
+        if ((availableCharsInBuffer - bufferPos) <= 1) {
             //fillbuffer
 
             //copy content from old buffer to valuebuffer
@@ -266,8 +266,10 @@
             }
 
             try {
+                do {
-                availableCharsInBuffer = in.read(buffer, 0, buffer.length);
+                    availableCharsInBuffer = in.read(buffer, 0, buffer.length);
-                if (availableCharsInBuffer <= 0) {
+                } while (availableCharsInBuffer == 0);
+                if (availableCharsInBuffer == -1) {
                     return EOF;
                 }
 
\ No newline at end of file
