[ http://issues.apache.org/jira/browse/AXISCPP-914?page=comments#action_12459352 ] Franz Fehringer commented on AXISCPP-914: -----------------------------------------
Recently i got another problem with memory corruption, namely that in the STRINGCOPY, the line delete [] tgt; yielded access violations resp. "user defined breakpoint" messages. I made the following rewrite (after then it was OK): $ pwd /cd/d/Quellen/SVN/axis/c/src/soap Index: SoapFaultException.cpp =================================================================== --- SoapFaultException.cpp (Revision 480584) +++ SoapFaultException.cpp (Arbeitskopie) @@ -46,10 +46,8 @@ SoapFaultException(const AxisChar *code, const AxisChar *string, const AxisChar *actor, int exceptionCode) : AxisException(exceptionCode, string) { - m_code = NULL; - m_actor = NULL; - STRINGCOPY(m_code,code); - STRINGCOPY(m_actor,actor); + m_code = strdup(code); + m_actor = strdup(actor); } SoapFaultException:: @@ -62,16 +60,16 @@ SoapFaultException:: SoapFaultException(const SoapFaultException& copy): AxisException(copy) { - STRINGCOPY(m_code, copy.m_code); - STRINGCOPY(m_actor, copy.m_actor); + m_code = strdup(copy.m_code); + m_actor = strdup(copy.m_actor); } SoapFaultException& SoapFaultException:: operator=(const SoapFaultException& copy) { exception::operator=(copy); - STRINGCOPY(m_code, copy.m_code); - STRINGCOPY(m_actor, copy.m_actor); + m_code = strdup(copy.m_code); + m_actor = strdup(copy.m_actor); m_sMessage = copy.m_sMessage; m_iExceptionCode = copy.m_iExceptionCode; return *this; @@ -80,8 +78,8 @@ SoapFaultException:: ~SoapFaultException() throw() { - delete [] m_code; - delete [] m_actor; + free(m_code); + free(m_actor); } @@ -106,7 +104,7 @@ void SoapFaultException:: setFaultCode(const AxisChar *code) { - STRINGCOPY(m_code,code); + m_code = strdup(code); } void SoapFaultException:: @@ -118,7 +116,7 @@ void SoapFaultException:: setFaultActor(const AxisChar *actor) { - STRINGCOPY(m_actor,actor); + m_actor= strdup(actor); } > fault/exception/error handling flawed > ------------------------------------- > > Key: AXISCPP-914 > URL: http://issues.apache.org/jira/browse/AXISCPP-914 > Project: Axis-C++ > Issue Type: Bug > Components: Client - Stub > Affects Versions: 1.6 Alpha > Environment: WIN2KSP4 JDK1.5.0_06 MSVC6SP6 > Reporter: Franz Fehringer > Attachments: PegsPortType.cpp, t_ErrorResponse.cpp, vakanz.wsdl, > vakanz.xsd > > > fault/exception/error handling seems to be flawed in several respects (in > what follows i refer to my attached example). > First the intention of the WSDL/XSD writers clearly was to expect an > ErrorResponse element inside the soap:faultdetail for the error scenario of > all three requests (and i think they are right so). > The Axis generated code instead looks for LoginFault, LogoutFault and > SearchRoomsFault. > Second there seem to be problems with memory management. > I get user defined breakpoints and/or access violations at (all in > PegsPortType.cpp) > throw fault; // line 588 > delete [] const_cast<char*>(detail); // lines 615,720,879 > The const_cast as well as the interplay between assignment and delete > operations generally look fishy too me. > In my investigations i stumbled over the generated t_ErrorResponse (derived > from SoapFaultException) copy constructor. > The base class is not copied over there. > More to follow. -- 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]