Skip to content

Commit deef072

Browse files
committed
Fix encoding of non-ascii contents written to parameter files.
1 parent d39cf07 commit deef072

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/main/java/com/google/devtools/build/lib/actions/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ java_library(
192192
"//src/main/java/com/google/devtools/build/lib/util:filetype",
193193
"//src/main/java/com/google/devtools/build/lib/util:os",
194194
"//src/main/java/com/google/devtools/build/lib/util:shell_escaper",
195+
"//src/main/java/com/google/devtools/build/lib/util:string",
195196
"//src/main/java/com/google/devtools/build/lib/util:var_int",
196197
"//src/main/java/com/google/devtools/build/lib/util/io",
197198
"//src/main/java/com/google/devtools/build/lib/vfs",

src/main/java/com/google/devtools/build/lib/actions/ParameterFile.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.google.devtools.build.lib.util.GccParamFileEscaper;
2626
import com.google.devtools.build.lib.util.ShellEscaper;
2727
import com.google.devtools.build.lib.vfs.PathFragment;
28+
import com.google.devtools.build.lib.util.StringUtil;
2829
import java.io.BufferedOutputStream;
2930
import java.io.IOException;
3031
import java.io.OutputStream;
@@ -33,6 +34,7 @@
3334
import java.nio.CharBuffer;
3435
import java.nio.charset.Charset;
3536
import java.nio.charset.CharsetEncoder;
37+
import java.util.stream.StreamSupport;
3638

3739
/**
3840
* Support for parameter file generation (as used by gcc and other tools, e.g.
@@ -119,7 +121,11 @@ private static void writeContent(
119121
if (charset.equals(ISO_8859_1)) {
120122
writeContentLatin1(outputStream, arguments);
121123
} else if (charset.equals(UTF_8)) {
122-
writeContentUtf8(outputStream, arguments);
124+
ImmutableList<String> args =
125+
StreamSupport.stream(arguments.spliterator(), /* parallel= */ false)
126+
.map(StringUtil::decodeBytestringUtf8)
127+
.collect(ImmutableList.toImmutableList());
128+
writeContentUtf8(outputStream, args);
123129
} else {
124130
// Generic charset support
125131
OutputStreamWriter out = new OutputStreamWriter(outputStream, charset);

0 commit comments

Comments
 (0)