axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Samisa Abeysinghe (JIRA)" <axis-c-...@ws.apache.org>
Subject [jira] Updated: (AXISCPP-808) possible memory leak in the AxisChar* Double::serialize(const xsd__double* value) function
Date Thu, 25 Aug 2005 03:47:08 GMT
     [ http://issues.apache.org/jira/browse/AXISCPP-808?page=all ]

Samisa Abeysinghe updated AXISCPP-808:
--------------------------------------

    Component: XSD Types
      Version: current (nightly)

> possible memory leak in the AxisChar* Double::serialize(const xsd__double* value) function
> ------------------------------------------------------------------------------------------
>
>          Key: AXISCPP-808
>          URL: http://issues.apache.org/jira/browse/AXISCPP-808
>      Project: Axis-C++
>         Type: Bug
>   Components: XSD Types
>     Versions: current (nightly)
>     Reporter: Denis Linine
>     Priority: Trivial

>
> Hi
> Here is  the code from the Double.cpp file.
> AxisChar* Double::serialize(const xsd__double* value) throw (AxisSoapException)
> {
>     MinInclusive* minInclusive = getMinInclusive();
>     if (minInclusive->isSet())
>     {
>         if ( *value < minInclusive->getMinInclusiveAsDouble() )
>         {
>             AxisString exceptionMessage =
>             "Value to be serialized is less than MinInclusive specified for this type.
 MinInclusive = ";
>             AxisChar* length = new AxisChar[25];
>             sprintf(length, "%f", minInclusive->getMinInclusiveAsDouble());
>             exceptionMessage += length;
>             exceptionMessage += ", Value = ";
>             sprintf(length, "%f", *value);
>             exceptionMessage += length;
>             exceptionMessage += ".";
>             delete [] length;
>             
>             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
>                 const_cast<AxisChar*>(exceptionMessage.c_str()));
>         }
>     }
>     delete minInclusive;
>     MinExclusive* minExclusive = getMinExclusive();
>     if (minExclusive->isSet())
>     {
>         if ( *value <= minExclusive->getMinExclusiveAsDouble() )
>         {
>             AxisString exceptionMessage =
>             "Value to be serialized is less than or equal to MinExclusive specified for
this type.  MinExclusive = ";
>             AxisChar* length = new AxisChar[25];
>             sprintf(length, "%f", minExclusive->getMinExclusiveAsDouble());
>             exceptionMessage += length;
>             exceptionMessage += ", Value = ";
>             sprintf(length, "%f", *value);
>             exceptionMessage += length;
>             exceptionMessage += ".";
>             delete [] length;
>             
>             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
>                 const_cast<AxisChar*>(exceptionMessage.c_str()));
>         }
>     }
>     delete minExclusive;
>  
>     MaxInclusive* maxInclusive = getMaxInclusive();
>     if (maxInclusive->isSet())
>     {
>         if ( *value > maxInclusive->getMaxInclusiveAsDouble() )
>         {
>             AxisString exceptionMessage =
>             "Value to be serialized is greater than MaxInclusive specified for this type.
 MaxInclusive = ";
>             AxisChar* length = new AxisChar[25];
>             sprintf(length, "%f", maxInclusive->getMaxInclusiveAsDouble());
>             exceptionMessage += length;
>             exceptionMessage += ", Value = ";
>             sprintf(length, "%f", *value);
>             exceptionMessage += length;
>             exceptionMessage += ".";
>             delete [] length;
>             
>             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
>                 const_cast<AxisChar*>(exceptionMessage.c_str()));
>         }
>     }
>     delete maxInclusive;
>     MaxExclusive* maxExclusive = getMaxExclusive();
>     if (maxExclusive->isSet())
>     {
>         if ( *value >= maxExclusive->getMaxExclusiveAsDouble() )
>         {
>             AxisString exceptionMessage =
>             "Value to be serialized is greater than or equal to MaxExclusive specified
for this type.  MaxExclusive = ";
>             AxisChar* length = new AxisChar[25];
>             sprintf(length, "%f", maxExclusive->getMaxExclusiveAsDouble());
>             exceptionMessage += length;
>             exceptionMessage += ", Value = ";
>             sprintf(length, "%f", *value);
>             exceptionMessage += length;
>             exceptionMessage += ".";
>             delete [] length;
>             
>             throw AxisSoapException(CLIENT_SOAP_SOAP_CONTENT_ERROR,
>                 const_cast<AxisChar*>(exceptionMessage.c_str()));
>         }
>     }
>     delete maxExclusive;
>  
>     AxisChar* serializedValue = new char[80];
>     AxisSprintf (serializedValue, 80, "%f", *value);
> 	
> 	IAnySimpleType::serialize(serializedValue);
>     delete [] serializedValue;        
>     return m_Buf;
> }
> it seems that the memory used by  minInclusive,  minExclusive , etc will not be freed
if an exception is thrown.

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


Mime
View raw message