error-prone
error-prone copied to clipboard
JavacFileManager got a recursive loop and OOM exit
specail jar struct as below :

com.sun.tools.javac.file.JavacFileManager.ArchiveContainer issue code as below: this map has same object with new RelativeDirectory(relativePath).
while(var5.hasNext()) {
final Path root = (Path)var5.next();
Files.walkFileTree(root, EnumSet.noneOf(FileVisitOption.class), 2147483647, new SimpleFileVisitor<Path>() {
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
String relativePath = root.relativize(dir).toString();
if (ArchiveContainer.this.isValid(dir.getFileName()) && !ArchiveContainer.this.packages.containsKey(new RelativeDirectory(relativePath))) {
ArchiveContainer.this.packages.put(new RelativeDirectory(relativePath), dir);
return FileVisitResult.CONTINUE;
} else {
return FileVisitResult.SKIP_SUBTREE;
}
}
});
}
fixed this as below:
while(var5.hasNext()) {
final Path root = (Path)var5.next();
Files.walkFileTree(root, EnumSet.noneOf(FileVisitOption.class), 2147483647, new SimpleFileVisitor<Path>() {
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
String relativePath = root.relativize(dir).toString();
if (ArchiveContainer.this.isValid(dir.getFileName()) && !ArchiveContainer.this.packages.containsKey(new RelativeDirectory(relativePath))) {
ArchiveContainer.this.packages.put(new RelativeDirectory(relativePath), dir);
return FileVisitResult.CONTINUE;
} else {
return FileVisitResult.SKIP_SUBTREE;
}
}
});
}