Author: antoine
Date: Sun Feb 27 23:13:30 2011
New Revision: 1075177
URL: http://svn.apache.org/viewvc?rev=1075177&view=rev
Log:
PR 50716. Here is a case where optimizing a loop by using a variable for the
upper bound of the loop breaks an existing test case RhinoTest.
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/Target.java
Modified: ant/core/trunk/src/main/org/apache/tools/ant/Target.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/Target.java?rev=1075177&r1=1075176&r2=1075177&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/Target.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/Target.java Sun Feb 27
23:13:30 2011
@@ -383,8 +383,9 @@ public class Target implements TaskConta
try {
// use index-based approach to avoid
ConcurrentModificationExceptions;
// also account for growing target children
- final int size = children.size();
- for (int i = 0; i < size; i++) {
+ // do not optimize this loop by replacing children.size() by a
variable
+ // as children can be added dynamically as in RhinoScriptTest
where a target is adding work for itself
+ for (int i = 0; i < children.size(); i++) {
Object o = children.get(i);
if (o instanceof Task) {
Task task = (Task) o;