diff options
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | WHATSNEW | 4 | ||||
-rw-r--r-- | contributors.xml | 4 | ||||
-rw-r--r-- | src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java | 5 | ||||
-rw-r--r-- | src/tests/antunit/taskdefs/javac-test.xml | 20 |
5 files changed, 33 insertions, 1 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 5b9639b52..9d06fb746 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -427,6 +427,7 @@ Tim Stephenson Tim Whittington Timoteo Ohara Timothy Gerard Endres +TJ Rothwell Tom Ball Tom Brus Tom Cunningham @@ -7,6 +7,10 @@ Fixed bugs: * SCP (with sftp=true) task would fail if fetching file located in root directory Bugzilla Report 64742 + * javac task would fail if the arguments file it (internally) created didn't quote + the # character. This has now been fixed. + Bugzilla Reports 64912, 64790 + Other changes: -------------- diff --git a/contributors.xml b/contributors.xml index bbdb03cd6..a2969b5d2 100644 --- a/contributors.xml +++ b/contributors.xml @@ -1761,6 +1761,10 @@ <last>Endres</last> </name> <name> + <first>TJ</first> + <last>Rothwell</last> + </name> + <name> <first>Tom</first> <last>Ball</last> </name> diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java index 7b37a5845..b5227f5a9 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java @@ -23,6 +23,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Optional; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -67,6 +68,8 @@ public abstract class DefaultCompilerAdapter protected static final String lSep = StringUtils.LINE_SEP; // CheckStyle:ConstantNameCheck ON + private static final Pattern JAVAC_ARG_FILE_CHARS_TO_QUOTE = Pattern.compile("[ #]"); // space or # character + protected Path src; protected File destDir; protected String encoding; @@ -549,7 +552,7 @@ public abstract class DefaultCompilerAdapter try (BufferedWriter out = new BufferedWriter(new FileWriter(tmpFile))) { for (int i = firstFileName; i < args.length; i++) { - if (quoteFiles && args[i].contains(" ")) { + if (quoteFiles && JAVAC_ARG_FILE_CHARS_TO_QUOTE.matcher(args[i]).find()) { args[i] = args[i].replace(File.separatorChar, '/'); out.write("\"" + args[i] + "\""); diff --git a/src/tests/antunit/taskdefs/javac-test.xml b/src/tests/antunit/taskdefs/javac-test.xml index cdd83823b..ab5e3eb18 100644 --- a/src/tests/antunit/taskdefs/javac-test.xml +++ b/src/tests/antunit/taskdefs/javac-test.xml @@ -193,6 +193,26 @@ public class Adapter implements CompilerAdapter { <au:assertLogContains text="adapter called" /> </target> + <target name="testSpaceCharInArgs" depends="setup" description="https://bz.apache.org/bugzilla/show_bug.cgi?id=64912"> + <delete dir="${javac-dir}/src" /> + <mkdir dir="${javac-dir}/src" /> + <echo file="${javac-dir}/src/Foo.java"> + public class Foo { } + </echo> + <mkdir dir="${output}/foo with space bar" /> + <javac srcdir="${javac-dir}/src" destdir="${output}/foo with space bar" fork="yes" failOnError="true"/> + </target> + + <target name="test#CharInArgs" depends="setup" description="https://bz.apache.org/bugzilla/show_bug.cgi?id=64912"> + <delete dir="${javac-dir}/src" /> + <mkdir dir="${javac-dir}/src" /> + <echo file="${javac-dir}/src/Foo.java"> + public class Foo { } + </echo> + <mkdir dir="${output}/foo#bar" /> + <javac srcdir="${javac-dir}/src" destdir="${output}/foo#bar" fork="yes" failOnError="true"/> + </target> + <target name="testCompilerAsNestedElement" depends="-create-javac-adapter"> <componentdef classname="org.example.Adapter" name="myjavac"> <classpath location="${resources}" /> |