From 28441d3ff34daf829b21757473421d6e6b6fbbc4 Mon Sep 17 00:00:00 2001 From: Alexey Utkin Date: Fri, 8 Mar 2013 13:35:15 +0400 Subject: [PATCH] 8009463: Regression test test\java\lang\Runtime\exec\ArgWithSpaceAndFinalBackslash.java failing Reviewed-by: alanb, ahgross --- .../windows/classes/java/lang/ProcessImpl.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/jdk/src/windows/classes/java/lang/ProcessImpl.java b/jdk/src/windows/classes/java/lang/ProcessImpl.java index 87c89bb11e6..5f772aee8fb 100644 --- a/jdk/src/windows/classes/java/lang/ProcessImpl.java +++ b/jdk/src/windows/classes/java/lang/ProcessImpl.java @@ -263,6 +263,22 @@ final class ProcessImpl extends Process { 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);