diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java index ad1d73413..e7f57c623 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java @@ -642,28 +642,29 @@ public class FTP protected void createParents(FTPClient ftp, String filename) throws IOException, BuildException { - String cwd = ftp.printWorkingDirectory(); + File dir = new File(filename); + if (dirCache.contains(dir)) { + return; + } + Vector parents = new Vector(); - File dir = new File(filename); String dirname; while ((dirname = dir.getParent()) != null) { - dir = new File(dirname); + File checkDir = new File(dirname); + if (dirCache.contains(checkDir)) { + break; + } + dir = checkDir; parents.addElement(dir); } // find first non cached dir int i = parents.size() - 1; - while (i >= 0) { - dir = (File) parents.elementAt(i); - if (!dirCache.contains(dir)) { - break; - } - i--; - } if (i >= 0) { + String cwd = ftp.printWorkingDirectory(); String parent = dir.getParent(); if (parent != null) { if (!ftp.changeWorkingDirectory(parent)) {