[ http://issues.apache.org/jira/browse/AXISCPP-816?page=all ]
Samisa Abeysinghe reassigned AXISCPP-816:
-----------------------------------------
Assign To: Samisa Abeysinghe
> Problems in Call::Call () - src\engine\client\Call.cpp file
> -----------------------------------------------------------
>
> Key: AXISCPP-816
> URL: http://issues.apache.org/jira/browse/AXISCPP-816
> Project: Axis-C++
> Type: Bug
> Components: Client - Engine
> Versions: current (nightly)
> Reporter: Denis Linine
> Assignee: Samisa Abeysinghe
> Priority: Minor
>
> There is a couple of problems with the Call::Call () (code below)
> implementation.
> Call::Call ()
> :m_pcEndPointUri(NULL), m_strProxyHost(""), m_uiProxyPort(0),
> m_bUseProxy(false),
> m_bCallInitialized(false)
> {
> m_pAxisEngine = NULL;
> m_pIWSSZ = NULL;
> m_pIWSDZ = NULL;
> initialize_module (0);
>
> m_pTransport = NULL;
> m_nTransportType = APTHTTP1_1;
>
> m_nStatus = AXIS_SUCCESS;
> m_pchSessionID = NULL;
> m_pContentIdSet = new ContentIdSet();
> // Setup Transport
> try
> {
> // Get a transport object from factory
> if( !m_pTransport)
> {
> m_pTransport =
> SOAPTransportFactory::getTransportObject(m_nTransportType);
> if( !m_pTransport)
> {
> m_nStatus = AXIS_FAIL;
> }
> }
> // Engine initialization
> m_pAxisEngine = new ClientAxisEngine ();
> if (!m_pAxisEngine)
> {
> m_nStatus = AXIS_FAIL;
> }
> m_nStatus = m_pAxisEngine->initialize ();
> }
> catch( AxisException& e)
> {
> char * pszError = new char[strlen( e.what()) + 1];
> strcpy( pszError, e.what());
> throw AxisGenException( e.getExceptionCode(),
> const_cast<char*>(pszError));
> }
> catch(...)
> {
> throw;
> }
> }
> the most obvious one is that the pszError in the catch( AxisException& e)
> leaks.
> one could write that code like this
> catch( AxisException& e)
> {
> throw AxisGenException( e.getExceptionCode(), e.what());
> }
> The second problem is that if an exception is thrown from the constructor -
> the destructor will not be called. This means that if an exception is thrown
> - the
> memory pointed by m_pContentIdSet will leak always, m_pTransport will never
> be destroyed and memory pointed by m_pAxisEngine will leak if the execution
> went so far that it was allocated.
--
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