You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2005/01/18 10:46:04 UTC
cvs commit: ws-axis/c/src/soap/xsd Base64Binary.cpp Base64Binary.hpp
dicka 2005/01/18 01:46:04
Modified: c/src/soap/xsd Base64Binary.cpp Base64Binary.hpp
Log:
Fix memory leaks in XSD objects: Fixing Base64Binary.
PR: AXISCPP-384
Submitted by: Adrian Dick
Revision Changes Path
1.2 +29 -0 ws-axis/c/src/soap/xsd/Base64Binary.cpp
Index: Base64Binary.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Base64Binary.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Base64Binary.cpp 10 Jan 2005 17:18:33 -0000 1.1
+++ Base64Binary.cpp 18 Jan 2005 09:46:03 -0000 1.2
@@ -2,6 +2,24 @@
AXIS_CPP_NAMESPACE_START
+ Base64Binary::Base64Binary():m_Buf(NULL), m_base64Binary(NULL)
+ {
+ }
+
+ Base64Binary::~Base64Binary()
+ {
+ if (m_Buf)
+ {
+ delete [] m_Buf;
+ m_Buf = NULL;
+ }
+
+ /**
+ * Don't release storage for m_base64Binary as this is still needed by
+ * by customer applications, under current memory model.
+ */
+ }
+
AxisChar* Base64Binary::serialize(const void* value) throw (AxisSoapException)
{
return serialize((xsd__base64Binary*) value);
@@ -19,13 +37,24 @@
len = apr_base64_encode_binary (serializedValue, value->__ptr, value->__size);
serializedValue[len] = 0;
+ if (m_Buf)
+ {
+ delete [] m_Buf;
+ m_Buf = NULL;
+ }
m_Buf = new char[strlen (serializedValue) + 1];
strcpy (m_Buf, serializedValue);
+ delete serializedValue;
return m_Buf;
}
xsd__base64Binary* Base64Binary::deserializeBase64Binary(const AxisChar* valueAsChar) throw (AxisSoapException)
{
+ if (m_base64Binary)
+ {
+ delete [] m_base64Binary;
+ m_base64Binary = NULL;
+ }
m_base64Binary = new xsd__base64Binary();
m_base64Binary->__size = apr_base64_decode_len (valueAsChar);
m_base64Binary->__ptr = new unsigned char[m_base64Binary->__size + 1];
1.2 +4 -0 ws-axis/c/src/soap/xsd/Base64Binary.hpp
Index: Base64Binary.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Base64Binary.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Base64Binary.hpp 10 Jan 2005 17:18:33 -0000 1.1
+++ Base64Binary.hpp 18 Jan 2005 09:46:03 -0000 1.2
@@ -32,6 +32,10 @@
class Base64Binary : public IAnySimpleType {
public:
+
+ Base64Binary();
+
+ ~Base64Binary();
/**
* Serialize value to it's on-the-wire string form.