[ 
https://issues.apache.org/jira/browse/XERCESJ-1457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12887239#action_12887239
 ] 

Michael Glavassevich commented on XERCESJ-1457:
-----------------------------------------------

DTDGrammars are built from the XML scanner.  The scanner interns strings (via 
the SymbolTable).  All the components connected to it in the pipeline receive 
those strings.  Developers who have studied Xerces' overall design [1] should 
have learned that. While I agree that there could be more comments in the code 
to help the casual reader understand I haven't seen anything in the context 
that these strings (and I'm also talking about the ones in XSDHandler and 
elsewhere) are used which would suggest that there are any actual bugs to be 
fixed. If you've found a real defect we should fix it, otherwise I'm inclined 
to return this JIRA issue.

[1] http://xerces.apache.org/xerces2-j/xni-xerces2.html

> Forgotten calls on intern() for QName fields
> --------------------------------------------
>
>                 Key: XERCESJ-1457
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1457
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: Other
>    Affects Versions: 2.10.0
>            Reporter: Stephanie Dietzel
>         Attachments: interning-fix.patch
>
>   Original Estimate: 0.08h
>  Remaining Estimate: 0.08h
>
> In the class Qname.java, the documentation states, "To be used correctly, the 
> strings must be identical references for equal strings."
> Here are 26 places where a QName is constructed or modifed with non-interned 
> strings.
> This is an efficiency concern, because the non-interned strings may take up
> more memory than interned ones.  It is also a correctness concern, because
> Xerces-J performs comparisons against QName fields using ==.
> The attached patch corrects these problems.
> For example, in XIncludeHandler.java,
> new QName(
>            XMLSymbols.PREFIX_XMLNS,
>            "",
>            XMLSymbols.PREFIX_XMLNS + ":",
>            NamespaceContext.XMLNS_URI)
> becomes
> new QName(
>              XMLSymbols.PREFIX_XMLNS,
>              "",
>              (XMLSymbols.PREFIX_XMLNS + ":").intern(),
>              NamespaceContext.XMLNS_URI)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to