Index: model/org/eclipse/jdt/internal/core/NameLookup.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java,v retrieving revision 1.84 diff -u -r1.84 NameLookup.java --- model/org/eclipse/jdt/internal/core/NameLookup.java 17 Mar 2005 09:02:55 -0000 1.84 +++ model/org/eclipse/jdt/internal/core/NameLookup.java 30 Mar 2005 21:32:40 -0000 @@ -176,13 +176,23 @@ this.packageFragments.put(pkgName, root); } else { if (existing instanceof PackageFragmentRoot) { - this.packageFragments.put(pkgName, new IPackageFragmentRoot[] {(PackageFragmentRoot) existing, root}); + if (!existing.equals(root)) + this.packageFragments.put(pkgName, new IPackageFragmentRoot[] {(PackageFragmentRoot) existing, root}); } else { IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) existing; int rootLength = roots.length; - System.arraycopy(roots, 0, roots = new IPackageFragmentRoot[rootLength+1], 0, rootLength); - roots[rootLength] = root; - this.packageFragments.put(pkgName, roots); + boolean containsRoot = false; + for (int j = 0; j < rootLength; j++) { + if (roots[j].equals(root)) { + containsRoot = true; + break; + } + } + if (containsRoot) { + System.arraycopy(roots, 0, roots = new IPackageFragmentRoot[rootLength+1], 0, rootLength); + roots[rootLength] = root; + this.packageFragments.put(pkgName, roots); + } } } visited.add(root);