8194669: jaotc truncates the invalid filename provided to --output
authoriveresov
Tue, 23 Jan 2018 08:18:36 -0800
changeset 48805 decc1bb41107
parent 48804 8f451978683c
child 48806 51fc22e5fb00
8194669: jaotc truncates the invalid filename provided to --output Summary: Do not skip the first character of the linker output Reviewed-by: kvn
src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java
--- a/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java	Tue Jan 23 08:55:47 2018 +0100
+++ b/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java	Tue Jan 23 08:18:36 2018 -0800
@@ -44,6 +44,14 @@
         return libraryFileName;
     }
 
+    private static String getString(InputStream stream) {
+        BufferedReader br = new BufferedReader(new InputStreamReader(stream));
+        Stream<String> lines = br.lines();
+        StringBuilder sb = new StringBuilder();
+        lines.iterator().forEachRemaining(e -> sb.append(e));
+        return sb.toString();
+    }
+
     Linker(Main main) throws Exception {
         this.options = main.options;
         String name = options.outputName;
@@ -106,12 +114,7 @@
             Process p = Runtime.getRuntime().exec(linkerCheck);
             final int exitCode = p.waitFor();
             if (exitCode != 0) {
-                InputStream stderr = p.getErrorStream();
-                BufferedReader br = new BufferedReader(new InputStreamReader(stderr));
-                Stream<String> lines = br.lines();
-                StringBuilder sb = new StringBuilder();
-                lines.iterator().forEachRemaining(e -> sb.append(e));
-                throw new InternalError(sb.toString());
+                throw new InternalError(getString(p.getErrorStream()));
             }
         }
     }
@@ -120,15 +123,11 @@
         Process p = Runtime.getRuntime().exec(linkerCmd);
         final int exitCode = p.waitFor();
         if (exitCode != 0) {
-            InputStream stderr = p.getErrorStream();
-            if (stderr.read() == -1) {
-                stderr = p.getInputStream();
+            String errorMessage = getString(p.getErrorStream());
+            if (errorMessage.isEmpty()) {
+                errorMessage = getString(p.getInputStream());
             }
-            BufferedReader br = new BufferedReader(new InputStreamReader(stderr));
-            Stream<String> lines = br.lines();
-            StringBuilder sb = new StringBuilder();
-            lines.iterator().forEachRemaining(e -> sb.append(e));
-            throw new InternalError(sb.toString());
+            throw new InternalError(errorMessage);
         }
         File objFile = new File(objectFileName);
         if (objFile.exists()) {