diff --git a/src/main/org/apache/tools/ant/taskdefs/Delete.java b/src/main/org/apache/tools/ant/taskdefs/Delete.java
index 9defc1c92..b1008494a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Delete.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Delete.java
@@ -597,15 +597,30 @@ public class Delete extends MatchingTask {
fs = (FileSet) fs.clone();
fs.setProject(getProject());
}
- File fsDir = fs.getDir();
+ final File fsDir = fs.getDir();
if (fsDir == null) {
throw new BuildException(
"File or Resource without directory or file specified");
} else if (!fsDir.isDirectory()) {
handle("Directory does not exist: " + fsDir);
} else {
- resourcesToDelete.add(fs);
DirectoryScanner ds = fs.getDirectoryScanner();
+ // the previous line has already scanned the
+ // filesystem, in order to avoid a rescan when later
+ // iterating, capture the results now and store them
+ final String[] files = ds.getIncludedFiles();
+ resourcesToDelete.add(new ResourceCollection() {
+ public boolean isFilesystemOnly() {
+ return true;
+ }
+ public int size() {
+ return files.length;
+ }
+ public Iterator iterator() {
+ return new FileResourceIterator(getProject(),
+ fsDir, files);
+ }
+ });
if (includeEmpty) {
filesetDirs.add(new ReverseDirs(getProject(), fsDir,
ds
diff --git a/src/tests/antunit/taskdefs/copy-test.xml b/src/tests/antunit/taskdefs/copy-test.xml
index 5e1458687..6ca8cecda 100644
--- a/src/tests/antunit/taskdefs/copy-test.xml
+++ b/src/tests/antunit/taskdefs/copy-test.xml
@@ -150,4 +150,42 @@ public class NullByteStreamResource extends Resource {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/antunit/taskdefs/delete-test.xml b/src/tests/antunit/taskdefs/delete-test.xml
index e7c335674..da91e4b60 100644
--- a/src/tests/antunit/taskdefs/delete-test.xml
+++ b/src/tests/antunit/taskdefs/delete-test.xml
@@ -94,4 +94,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/tests/antunit/taskdefs/move-test.xml b/src/tests/antunit/taskdefs/move-test.xml
index 1113a320d..2450559b1 100644
--- a/src/tests/antunit/taskdefs/move-test.xml
+++ b/src/tests/antunit/taskdefs/move-test.xml
@@ -59,4 +59,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+