Orphan/adopt grammar support in XMLGrammarPoolImpl is broken
------------------------------------------------------------
Key: XERCESC-1798
URL: https://issues.apache.org/jira/browse/XERCESC-1798
Project: Xerces-C++
Issue Type: Bug
Components: Validating Parser (XML Schema)
Affects Versions: 2.8.0, 3.0.0
Reporter: Boris Kolpackov
The attached test case demonstrates a bug in the orphanGrammar()/cacheGrammar()
implementation. In a nutshell, the problem is in the current architecture that
uses XMLStringPool to store namespace URIs (and in some cases names). This
string pool resides in the XMLGrammarPoolImpl instance and is shared by all
individual grammars this grammar pool contains. When the grammar is orphaned,
it does not contain any references to the pool which used to host it but it
still contains string IDs that refer to the strings inside the string pool.
Once such a grammar is imported with cacheGrammar() into a new grammar pool,
there is no way for the importing grammar pool to populate its string pool with
necessary strings.
Properly fixing this bug is not going to be easy. A fairly simple but ugly
workaround is to manually synchronize string pools in the two grammar pools
before importing the grammars (the workaround is commented out in the test
case).
--
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]