Browse Source

no need to clone a linked list to iterate through it

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@697073 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 17 years ago
parent
commit
be09d4522b
1 changed files with 5 additions and 4 deletions
  1. +5
    -4
      src/main/org/apache/tools/ant/DirectoryScanner.java

+ 5
- 4
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -1785,20 +1785,21 @@ public class DirectoryScanner
private boolean causesIllegalSymlinkLoop(String dirName, File parent, private boolean causesIllegalSymlinkLoop(String dirName, File parent,
LinkedList directoryNamesFollowed) { LinkedList directoryNamesFollowed) {
try { try {
if (CollectionUtils.frequency(directoryNamesFollowed, dirName)
if (directoryNamesFollowed.size() >= maxLevelsOfSymlinks
&& CollectionUtils.frequency(directoryNamesFollowed, dirName)
>= maxLevelsOfSymlinks >= maxLevelsOfSymlinks
&& FILE_UTILS.isSymbolicLink(parent, dirName)) { && FILE_UTILS.isSymbolicLink(parent, dirName)) {


LinkedList s = (LinkedList) directoryNamesFollowed.clone();
ArrayList files = new ArrayList(); ArrayList files = new ArrayList();
File f = FILE_UTILS.resolveFile(parent, dirName); File f = FILE_UTILS.resolveFile(parent, dirName);
String target = f.getCanonicalPath(); String target = f.getCanonicalPath();
files.add(target); files.add(target);


String relPath = ""; String relPath = "";
while (s.size() > 0) {
for (Iterator i = directoryNamesFollowed.iterator();
i.hasNext(); ) {
relPath += "../"; relPath += "../";
String dir = (String) s.removeFirst();
String dir = (String) i.next();
if (dirName.equals(dir)) { if (dirName.equals(dir)) {
f = FILE_UTILS.resolveFile(parent, relPath + dir); f = FILE_UTILS.resolveFile(parent, relPath + dir);
files.add(f.getCanonicalPath()); files.add(f.getCanonicalPath());


Loading…
Cancel
Save