From 4427f8c1ed17b388ce759a0249c44464c7b9a971 Mon Sep 17 00:00:00 2001 From: Antoine Levy-Lambert Date: Sun, 27 Feb 2011 23:13:30 +0000 Subject: [PATCH] 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. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1075177 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/Target.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/org/apache/tools/ant/Target.java b/src/main/org/apache/tools/ant/Target.java index 38ca7ad8f..a26f5c8a8 100644 --- a/src/main/org/apache/tools/ant/Target.java +++ b/src/main/org/apache/tools/ant/Target.java @@ -383,8 +383,9 @@ public class Target implements TaskContainer { 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;