diff --git a/WHATSNEW b/WHATSNEW index 018569508..acc8fe6f4 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -28,6 +28,9 @@ Fixed bugs: * dependset failed if the basedir of a target fileset did not exist. Bugzilla 40916. +* Recursive filtering encountered NullPointerExceptions under certain + circumstances. Bugzilla 41086. + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/types/FilterSet.java b/src/main/org/apache/tools/ant/types/FilterSet.java index f571ada65..35a2142ef 100644 --- a/src/main/org/apache/tools/ant/types/FilterSet.java +++ b/src/main/org/apache/tools/ant/types/FilterSet.java @@ -581,8 +581,8 @@ public class FilterSet extends DataType implements Cloneable { } passedTokens.addElement(parent); String value = iReplaceTokens(line); - if (value.indexOf(beginToken) == -1 && !duplicateToken) { - duplicateToken = false; + if (value.indexOf(beginToken) == -1 && !duplicateToken + && recurseDepth == 1) { passedTokens = null; } else if (duplicateToken) { // should always be the case... diff --git a/src/tests/antunit/types/filterset-test.xml b/src/tests/antunit/types/filterset-test.xml new file mode 100644 index 000000000..23e122377 --- /dev/null +++ b/src/tests/antunit/types/filterset-test.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +