### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java,v retrieving revision 1.75 diff -u -r1.75 ClassFileReader.java --- compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java 31 Mar 2006 22:13:25 -0000 1.75 +++ compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java 9 Oct 2008 13:55:22 -0000 @@ -551,23 +551,22 @@ if (this.sourceName != null) return this.sourceName; - this.sourceName = getInnerSourceName(); // member or local scenario - if (this.sourceName == null) { - char[] name = getName(); // extract from full name + char[] name = getInnerSourceName(); // member or local scenario + if (name == null) { + name = getName(); // extract from full name int start; if (isAnonymous()) { - start = CharOperation.indexOf('$', name, CharOperation.lastIndexOf('/', name) + 1) + 1; + start = CharOperation.indexOf('$', name, CharOperation.lastIndexOf('/', name) + 1) + 1; } else { - start = CharOperation.lastIndexOf('/', name) + 1; + start = CharOperation.lastIndexOf('/', name) + 1; + } + if (start > 0) { + char[] newName = new char[name.length - start]; + System.arraycopy(name, start, newName, 0, newName.length); + name = newName; } - if (start == 0) { - this.sourceName = name; - } else { - this.sourceName = new char[name.length - start]; - System.arraycopy(name, start, this.sourceName, 0, this.sourceName.length); - } } - return this.sourceName; + return this.sourceName = name; } /** * Answer the resolved name of the receiver's superclass in the