aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2017-11-14 06:39:43 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-14 06:42:04 -0800
commit4fd788115bdd3e4fa3861bcb4b9caab480543da5 (patch)
tree01573525a5161579284f65d90ee92c695edb2db5 /src/main
parentc364e082b1e9b273fe449a872293b4cf62177e85 (diff)
Windows,Subcommands: argv quoting for empty args
Quote empty args in the command argument vector otherwise the command's executable would not recognize them as arguments. Fixes https://github.com/bazelbuild/bazel/issues/3973 Change-Id: Iccfb59e75c748247c8df7d52fb8cf4227eae6fa7 PiperOrigin-RevId: 175672201
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/windows/jni/WindowsProcesses.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/windows/jni/WindowsProcesses.java b/src/main/java/com/google/devtools/build/lib/windows/jni/WindowsProcesses.java
index bb13941bcb..65b262088a 100644
--- a/src/main/java/com/google/devtools/build/lib/windows/jni/WindowsProcesses.java
+++ b/src/main/java/com/google/devtools/build/lib/windows/jni/WindowsProcesses.java
@@ -216,6 +216,9 @@ public class WindowsProcesses {
private static native int nativeGetpid();
+ // TODO(laszlocsomor): Audit this method and fix bugs. This method implements Bash quoting
+ // semantics but Windows quote semantics are different.
+ // More info: http://daviddeley.com/autohotkey/parameters/parameters.htm
public static String quoteCommandLine(List<String> argv) {
StringBuilder result = new StringBuilder();
for (int iArg = 0; iArg < argv.size(); iArg++) {
@@ -223,6 +226,10 @@ public class WindowsProcesses {
result.append(" ");
}
String arg = argv.get(iArg);
+ if (arg.isEmpty()) {
+ result.append("\"\"");
+ continue;
+ }
boolean hasSpace = arg.contains(" ");
if (!arg.contains("\"") && !arg.contains("\\") && !hasSpace) {
// fast path. Just append the input string.