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 2006/02/22 16:14:06 UTC
svn commit: r379785 - in /webservices/axis/trunk/c/src/common: ArrayBean.cpp
AxisFile.h
Author: dicka
Date: Wed Feb 22 07:14:03 2006
New Revision: 379785
URL: http://svn.apache.org/viewcvs?rev=379785&view=rev
Log:
AXISCPP-933
Resolve problem of trace file handle not be correctly closed when using start up trace but not runtime trace.
Modified:
webservices/axis/trunk/c/src/common/ArrayBean.cpp
webservices/axis/trunk/c/src/common/AxisFile.h
Modified: webservices/axis/trunk/c/src/common/ArrayBean.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/common/ArrayBean.cpp?rev=379785&r1=379784&r2=379785&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/common/ArrayBean.cpp (original)
+++ webservices/axis/trunk/c/src/common/ArrayBean.cpp Wed Feb 22 07:14:03 2006
@@ -55,102 +55,253 @@
m_value.cta->pObject = NULL;
}
delete m_value.cta;
+ m_value.cta = NULL;
}
}
else if (AxisEngine::m_bServer && m_value.sta)
{
- switch (m_type)
+ if (m_nSize > 0)
{
- case XSD_BYTE:
- case XSD_UNSIGNEDBYTE:
+ for (int count = 0 ; count < m_nSize ; count++)
{
- char* a = (char*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_SHORT:
- case XSD_UNSIGNEDSHORT:
- {
- short* a = (short*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_INT:
- case XSD_UNSIGNEDINT:
- case XSD_BOOLEAN:
- {
- int* a = (int*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_LONG:
- case XSD_INTEGER:
- case XSD_UNSIGNEDLONG:
- {
- LONGLONG* a = (LONGLONG *)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_DURATION:
- {
- long* a = (long*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_FLOAT:
- {
- float* a = (float*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_DOUBLE:
- case XSD_DECIMAL:
- {
- double* a = (double*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_STRING:
- case XSD_ANYURI:
- case XSD_QNAME:
- case XSD_NOTATION:
- {
- AxisChar** a = (AxisChar**)m_value.sta;
- for (int ix=0;ix<m_nSize;ix++)
+ if ( ((void **) m_value.sta)[count] != NULL)
{
- delete [] a[ix];
+ switch (m_type)
+ {
+ case XSD_DURATION:
+ {
+ delete ((xsd__duration**) m_value.sta)[count];
+ break;
+ }
+ case XSD_DATETIME:
+ {
+ delete ((xsd__dateTime**) m_value.sta)[count];
+ break;
+ }
+ case XSD_TIME:
+ {
+ delete ((xsd__time**) m_value.sta)[count];
+ break;
+ }
+ case XSD_DATE:
+ {
+ delete ((xsd__date**) m_value.sta)[count];
+ break;
+ }
+ case XSD_GYEARMONTH:
+ {
+ delete ((xsd__gYearMonth**) m_value.sta)[count];
+ break;
+ }
+ case XSD_GYEAR:
+ {
+ delete ((xsd__gYear**) m_value.sta)[count];
+ break;
+ }
+ case XSD_GMONTHDAY:
+ {
+ delete ((xsd__gMonthDay**) m_value.sta)[count];
+ break;
+ }
+ case XSD_GDAY:
+ {
+ delete ((xsd__gDay**) m_value.sta)[count];
+ break;
+ }
+ case XSD_GMONTH:
+ {
+ delete ((xsd__gMonth**) m_value.sta)[count];
+ break;
+ }
+ case XSD_STRING:
+ {
+ delete []((xsd__string*) m_value.sta)[count];
+ break;
+ }
+ case XSD_NORMALIZEDSTRING:
+ {
+ delete []((xsd__normalizedString*) m_value.sta)[count];
+ break;
+ }
+ case XSD_TOKEN:
+ {
+ delete []((xsd__token*) m_value.sta)[count];
+ break;
+ }
+ case XSD_LANGUAGE:
+ {
+ delete []((xsd__language*) m_value.sta)[count];
+ break;
+ }
+ case XSD_NAME:
+ {
+ delete []((xsd__Name*) m_value.sta)[count];
+ break;
+ }
+ case XSD_NCNAME:
+ {
+ delete []((xsd__NCName*) m_value.sta)[count];
+ break;
+ }
+ case XSD_ID:
+ {
+ delete []((xsd__ID*) m_value.sta)[count];
+ break;
+ }
+ case XSD_IDREF:
+ {
+ delete []((xsd__IDREF*) m_value.sta)[count];
+ break;
+ }
+ case XSD_IDREFS:
+ {
+ delete []((xsd__IDREFS*) m_value.sta)[count];
+ break;
+ }
+ case XSD_ENTITY:
+ {
+ delete []((xsd__ENTITY*) m_value.sta)[count];
+ break;
+ }
+ case XSD_ENTITIES:
+ {
+ delete []((xsd__ENTITIES*) m_value.sta)[count];
+ break;
+ }
+ case XSD_NMTOKEN:
+ {
+ delete []((xsd__NMTOKEN*) m_value.sta)[count];
+ break;
+ }
+ case XSD_NMTOKENS:
+ {
+ delete []((xsd__NMTOKENS*) m_value.sta)[count];
+ break;
+ }
+ case XSD_BOOLEAN:
+ {
+ delete ((xsd__boolean**) m_value.sta)[count];
+ break;
+ }
+ case XSD_BASE64BINARY:
+ {
+ delete ((xsd__base64Binary**) m_value.sta)[count];
+ break;
+ }
+ case XSD_HEXBINARY:
+ {
+ delete ((xsd__hexBinary**) m_value.sta)[count];
+ break;
+ }
+ case XSD_FLOAT:
+ {
+ delete ((xsd__float**) m_value.sta)[count];
+ break;
+ }
+ case XSD_DECIMAL:
+ {
+ delete ((xsd__decimal**) m_value.sta)[count];
+ break;
+ }
+ case XSD_INTEGER:
+ {
+ delete ((xsd__integer**) m_value.sta)[count];
+ break;
+ }
+ case XSD_NONPOSITIVEINTEGER:
+ {
+ delete ((xsd__nonPositiveInteger**) m_value.sta)[count];
+ break;
+ }
+ case XSD_NEGATIVEINTEGER:
+ {
+ delete ((xsd__negativeInteger**) m_value.sta)[count];
+ break;
+ }
+ case XSD_LONG:
+ {
+ delete ((xsd__long**) m_value.sta)[count];
+ break;
+ }
+ case XSD_INT:
+ {
+ delete ((xsd__int**) m_value.sta)[count];
+ break;
+ }
+ case XSD_SHORT:
+ {
+ delete ((xsd__short**) m_value.sta)[count];
+ break;
+ }
+ case XSD_BYTE:
+ {
+ delete ((xsd__byte**) m_value.sta)[count];
+ break;
+ }
+ case XSD_NONNEGATIVEINTEGER:
+ {
+ delete ((xsd__nonNegativeInteger**) m_value.sta)[count];
+ break;
+ }
+ case XSD_UNSIGNEDLONG:
+ {
+ delete ((xsd__unsignedLong**) m_value.sta)[count];
+ break;
+ }
+ case XSD_UNSIGNEDINT:
+ {
+ delete ((xsd__unsignedInt**) m_value.sta)[count];
+ break;
+ }
+ case XSD_UNSIGNEDSHORT:
+ {
+ delete ((xsd__unsignedShort**) m_value.sta)[count];
+ break;
+ }
+ case XSD_UNSIGNEDBYTE:
+ {
+ delete ((xsd__unsignedByte**) m_value.sta)[count];
+ break;
+ }
+ case XSD_POSITIVEINTEGER:
+ {
+ delete ((xsd__positiveInteger**) m_value.sta)[count];
+ break;
+ }
+ case XSD_DOUBLE:
+ {
+ delete ((xsd__double**) m_value.sta)[count];
+ break;
+ }
+ case XSD_ANYURI:
+ {
+ delete []((xsd__anyURI*) m_value.sta)[count];
+ break;
+ }
+ case XSD_QNAME:
+ {
+ delete []((xsd__QName*) m_value.sta)[count];
+ break;
+ }
+ case XSD_NOTATION:
+ {
+ delete []((xsd__NOTATION*) m_value.sta)[count];
+ break;
+ }
+ case XSD_ARRAY:
+ {
+ delete ((Axis_Array**) m_value.sta)[count];
+ break;
+ }
+ default:
+ break;
+ }
}
- delete [] a;
- }
- break;
- case XSD_HEXBINARY:
- {
- xsd__hexBinary* a = (xsd__hexBinary*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_BASE64BINARY:
- {
- xsd__base64Binary* a = (xsd__base64Binary*)m_value.sta;
- delete [] a;
- }
- break;
- case XSD_DATETIME:
- case XSD_TIME:
- case XSD_DATE:
- case XSD_GYEARMONTH:
- case XSD_GYEAR:
- case XSD_GMONTHDAY:
- case XSD_GDAY:
- case XSD_GMONTH:
- {
- tm* a = (tm*)m_value.sta;
- delete [] a;
}
- break;
- // continue this for all basic types
- default:;
+ m_nSize = 0;
}
+ delete [] m_value.sta;
+ m_value.sta = NULL;
}
}
Modified: webservices/axis/trunk/c/src/common/AxisFile.h
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/common/AxisFile.h?rev=379785&r1=379784&r2=379785&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/common/AxisFile.h (original)
+++ webservices/axis/trunk/c/src/common/AxisFile.h Wed Feb 22 07:14:03 2006
@@ -120,7 +120,10 @@
~AxisFile()
{
if(pFILEFile)
+ {
fclose(pFILEFile);
+ pFILEFile = NULL;
+ }
}
private: