[ http://issues.apache.org/jira/browse/XERCESC-1348?page=all ]
Alberto Massari resolved XERCESC-1348:
--------------------------------------
Resolution: Fixed
> IGXMLScanner allocates from wrong memory manager
> ------------------------------------------------
>
> Key: XERCESC-1348
> URL: http://issues.apache.org/jira/browse/XERCESC-1348
> Project: Xerces-C++
> Type: Bug
> Components: SAX/SAX2, Validating Parser (DTD)
> Versions: 2.6.0
> Environment: Found on solaris, but no a solaris issue.
> Reporter: Mark Weissman
> Assignee: David Bertoni
> Attachments: patch.txt
>
> IGXMLScanner.c allocates from fGrammarPoolMemoryManager instead of
> fMemoryManager.
> This causes a memory leak and thread safety issues when sharing
> an unsynchronized grammar pool across multiple threads. I included diffs
> that affect my application but I suspect this problem exists for other
> scanners too. It would be good if somebody could check all uses of
> fGrammarPoolMemoryManager to verify the immutability of cached grammars
> and thread safety for the GrammarPool. When not parsing grammars, the
> pool should not change.
>
>
> > diff IGXMLScanner.cpp IGXMLScanner.cpp.orig
> 1256,1257c1256
> < MemoryManager *rootDeclMgr = /*MDW*/fUseCachedGrammar ? fMemoryManager
> : fGrammarPoolMemoryManager;
> < DTDElementDecl* rootDecl = new (/*MDW*/rootDeclMgr) DTDElementDecl
> ---
> > DTDElementDecl* rootDecl = new (fGrammarPoolMemoryManager)
> > DTDElementDecl
> 1262c1261
> < , /*MDW*/rootDeclMgr
> ---
> > , fGrammarPoolMemoryManager
> 1497c1496
> < DTDEntityDecl* declDTD = new (fMemoryManager/*MDW*/)
> DTDEntityDecl(gDTDStr, false, fMemoryManager/*MDW*/);
> ---
> > DTDEntityDecl* declDTD = new (fGrammarPoolMemoryManager)
> > DTDEntityDecl(gDTDStr, false, fGrammarPoolMemoryManager);
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]