changeset 5385:46326d5499d7

8009463: Regression test test\java\lang\Runtime\exec\ArgWithSpaceAndFinalBackslash.java failing. Reviewed-by: alanb, ahgross
author uta
date Fri, 08 Mar 2013 13:47:02 +0400
parents 56477df97a76
children 8f1751ad199f
files src/windows/classes/java/lang/ProcessImpl.java
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/windows/classes/java/lang/ProcessImpl.java	Mon Apr 29 10:20:55 2013 -0400
+++ b/src/windows/classes/java/lang/ProcessImpl.java	Fri Mar 08 13:47:02 2013 +0400
@@ -262,6 +262,22 @@
             if (needsEscaping(isCmdFile, s)) {
                 cmdbuf.append('"');
                 cmdbuf.append(s);
+
+                // The code protects the [java.exe] and console command line
+                // parser, that interprets the [\"] combination as an escape
+                // sequence for the ["] char.
+                //     http://msdn.microsoft.com/en-us/library/17w5ykft.aspx
+                //
+                // If the argument is an FS path, doubling of the tail [\]
+                // char is not a problem for non-console applications.
+                //
+                // The [\"] sequence is not an escape sequence for the [cmd.exe]
+                // command line parser. The case of the [""] tail escape
+                // sequence could not be realized due to the argument validation
+                // procedure.
+                if (!isCmdFile && s.endsWith("\\")) {
+                    cmdbuf.append('\\');
+                }
                 cmdbuf.append('"');
             } else {
                 cmdbuf.append(s);