[ 
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]

Reply via email to