The returned string should have been interned if stringInterning is true. This patch from Mark fixes this. No javax.xml Mauve regressions were apparent with this patch (though we may not have enough such tests) and it appears correct.
ChangeLog: 2009-02-05 Mark Wielaard <m...@klomp.org> PR classpath/38912: * gnu/xml/stream/XMLParser.java: (getLocalName()): Respect stringInterning. (getName()): Likewise. (getPrefix()): Likewise. -- Andrew :) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8
Index: gnu/xml/stream/XMLParser.java =================================================================== RCS file: /sources/classpath/classpath/gnu/xml/stream/XMLParser.java,v retrieving revision 1.35 diff -u -u -r1.35 XMLParser.java --- gnu/xml/stream/XMLParser.java 6 May 2008 01:07:02 -0000 1.35 +++ gnu/xml/stream/XMLParser.java 5 Feb 2009 20:35:07 -0000 @@ -725,7 +725,10 @@ case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); - return (ci == -1) ? qName : qName.substring(ci + 1); + String localName = (ci == -1) ? qName : qName.substring(ci + 1); + if (stringInterning) + localName = localName.intern(); + return localName; default: return null; } @@ -745,9 +748,13 @@ String qName = buf.toString(); int ci = qName.indexOf(':'); String localName = (ci == -1) ? qName : qName.substring(ci + 1); + if (stringInterning) + localName = localName.intern(); String prefix = (ci == -1) ? (namespaceAware ? XMLConstants.DEFAULT_NS_PREFIX : null) : qName.substring(0, ci); + if (stringInterning && prefix != null) + prefix = prefix.intern(); String namespaceURI = getNamespaceURI(prefix); return new QName(namespaceURI, localName, prefix); default: @@ -831,9 +838,12 @@ case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); - return (ci == -1) ? + String prefix = (ci == -1) ? (namespaceAware ? XMLConstants.DEFAULT_NS_PREFIX : null) : qName.substring(0, ci); + if (stringInterning && prefix != null) + prefix = prefix.intern(); + return prefix; default: return null; }