[ http://issues.apache.org/jira/browse/XALANC-455?page=comments#action_12318121 ]
Alain Le Guennec commented on XALANC-455: ----------------------------------------- Apparently, a similar problem exists in file XSLTProcessorEnvSupportDefault.cpp, line 172. There too, XalanMemMgrAutoPtr should be replaced by XalanAutoPtr. > Problem when releasing InputSource obtained through an EntityResolver > --------------------------------------------------------------------- > > Key: XALANC-455 > URL: http://issues.apache.org/jira/browse/XALANC-455 > Project: XalanC > Type: Bug > Components: XalanC > Versions: CurrentCVS, 1.9 > Environment: MSVC6 / Win2k > Reporter: Alain Le Guennec > Fix For: CurrentCVS > > I think there is a problem when cleaning-up InputSources returned by a call > to resolveEntity() on an EntityResolver. > The problem lies in routine XSLTEngineImpl::parseXML(), at line 652 of file > XSLTEngineImpl.cpp: > A smart pointer of kind XalanMemMgrAutoPtr is used to manage the pointer to > the InputSource obtained from the EntityResolver. > However, Xerces' class InputSource inherits from XMemory, and this causes > trouble when the XalanMemMgrAutoPtr tries to free the memory. > Indeed, XMemory has customized new() and delete() operators that, > in addition to the space required to hold the object, > also allocates a little space for a special "header" placed just before. > The pointer returned by new() points just after the header, not at the > beginning of the allocated area. > In turn, XalanMemMgrAutoPtr calls the memory manager to deallocate the > InputSource, > but is not aware of the special header of XMemory objects, and so pass the > wrong address to delete()... > On my Windows machine, this systematically results in a bad memory access > exception. > I think this problem could also be the cause of the memory leak observed by > someone else on this list > (see thread "Changes, bugs, etc. between 1.8 and 1.9"). > I guess some system allocators are just stricter than others when delete() is > given the wrong address. > I am not too sure how to best fix this problem. > I just replace the use of XalanMemMgrAutoPtr by a simple XalanAutoPtr at line > 652, and I don't have any problem anymore. > Maybe it could also be possible to define a template specialization for > XalanMemMgrAutoPtr for type XMemory to account for the "header"? > Best regards, > Alain Le Guennec. -- 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]