git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@699002 13f79535-47bb-0310-9956-ffa450edef68master
@@ -226,6 +226,9 @@ Fixed bugs: | |||||
than numbers, letters, hyphen or underscore properly. | than numbers, letters, hyphen or underscore properly. | ||||
Bugzilla Report 45820. | Bugzilla Report 45820. | ||||
* <filterset> could miss multi-character begin tokens in some cases. | |||||
Bugzilla Report 45094. | |||||
Other changes: | Other changes: | ||||
-------------- | -------------- | ||||
@@ -537,9 +537,13 @@ public class FilterSet extends DataType implements Cloneable { | |||||
i = index + beginToken.length() + token.length() | i = index + beginToken.length() + token.length() | ||||
+ endToken.length(); | + endToken.length(); | ||||
} else { | } else { | ||||
// just append beginToken and search further | |||||
b.append(beginToken); | |||||
i = index + beginToken.length(); | |||||
// just append first character of beginToken | |||||
// and search further | |||||
// we can't skip the complete beginToken since | |||||
// it may contain the start of another | |||||
// candidate begin token (Bugzilla 45094) | |||||
b.append(beginToken.charAt(0)); | |||||
i = index + 1; | |||||
} | } | ||||
index = line.indexOf(beginToken, i); | index = line.indexOf(beginToken, i); | ||||
} | } | ||||
@@ -41,4 +41,23 @@ | |||||
actual="${afterfiltering}"/> | actual="${afterfiltering}"/> | ||||
</target> | </target> | ||||
<!-- https://issues.apache.org/bugzilla/show_bug.cgi?id=45094 --> | |||||
<target name="testOverlappingMulticharToken"> | |||||
<mkdir dir="${output}"/> | |||||
<copy todir="${output}"> | |||||
<string value="@@USER@@@@@HOST@@" /> | |||||
<mergemapper to="filterset-output.txt" /> | |||||
<filterset begintoken="@@" endtoken="@@"> | |||||
<filter token="USER" value="user" /> | |||||
<filter token="HOST" value="host" /> | |||||
</filterset> | |||||
</copy> | |||||
<loadfile property="afterfiltering" srcFile="${output}/filterset-output.txt"/> | |||||
<au:assertEquals | |||||
expected="user@host" | |||||
actual="${afterfiltering}"/> | |||||
</target> | |||||
</project> | </project> |