Snap for 4625912 from dc04857472fc5b29349b4e9d5e0fd788154fb4c5 to pi-release

Change-Id: Ia15e7e16ed1fe4dcd2f806cb5ad23e8b0d4d5c3c
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/StreamRedirector.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/StreamRedirector.java
index 56fefee..ca2ebc0 100644
--- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/StreamRedirector.java
+++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/StreamRedirector.java
@@ -26,9 +26,9 @@
 package org.apache.harmony.jpda.tests.framework;
 
 import java.io.InputStreamReader;
-import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.IOException;
+import java.io.Reader;
 
 /**
  * <p>This class provides redirection of debuggee output and error streams to logWriter.
@@ -37,7 +37,7 @@
 
     String name;
     LogWriter logWriter;
-    BufferedReader br;
+    Reader br;
     boolean doExit;
 
     /**
@@ -51,8 +51,7 @@
         super("Redirector for " + name);
         this.name = name;
         this.logWriter = logWriter;
-        InputStreamReader isr = new InputStreamReader(is);
-        br = new BufferedReader(isr, 1024);
+        br = new InputStreamReader(is);
         doExit = false;
     }
 
@@ -63,19 +62,30 @@
     public void run() {
         logWriter.println("Redirector started: " + name);
         try {
-            String line = "";
-            while (!doExit) {
+            StringBuilder cur = new StringBuilder();
+            while (!doExit || br.ready()) {
                 try {
-                    line = br.readLine();
-                    if (line == null)
+                    int nc = br.read();
+                    if (nc == -1) {
+                        if (cur.length() != 0) {
+                            logWriter.println(name + "> " + cur.toString());
+                            cur.setLength(0);
+                        }
                         break;
-                    
-                    logWriter.println(name + "> " + line);
+                    } else if (nc == (int)'\n') {
+                        logWriter.println(name + "> " + cur.toString());
+                        cur.setLength(0);
+                    } else {
+                        cur.appendCodePoint(nc);
+                    }
                 } catch (IllegalStateException e) {
                      //logWriter.printError("Illegal state exception! " + e);
                     //ignore
                 }
-                
+            }
+            if (cur.length() != 0) {
+                logWriter.println(name + "> " + cur.toString());
+                cur.setLength(0);
             }
             logWriter.println("Redirector completed: " + name);
         } catch (IOException e) {