cblecken 2005/06/28 11:23:20
Modified: c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
BeanParamWriter.java
Log:
Addressing the client data memory leak issues as for example in
AXISCPP-674. This was tested with a subset of the data types
on Windows using Purify.
PR: AXISCPP-674
Submitted by: Carsten Blecken
Revision Changes Path
1.78 +38 -41
ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java
Index: BeanParamWriter.java
===================================================================
RCS file:
/home/cvs/ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/BeanParamWriter.java,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- BeanParamWriter.java 17 Jun 2005 08:11:15 -0000 1.77
+++ BeanParamWriter.java 28 Jun 2005 18:23:20 -0000 1.78
@@ -955,10 +955,12 @@
+ " = pIWSDZ->"
+ CUtils.getParameterGetValueMethodName(
attribs[i].getTypeName(),
attribs[i].isAttribute()) + "( \""
- + soapTagName + "\",0)) != NULL)\n");
+ + soapTagName + "\",0)) != NULL) {\n");
writer.write("\t\tparam->"
+ attribs[i].getParamNameAsMember() + " = *(
"
+ attribs[i].getParamNameAsMember() + "
);\n");
+ writer.write("\t\tdelete " +
attribs[i].getParamNameAsMember() + ";\n");
+ writer.write("\t}\n");
//
writer.write("\t\tdelete " +
// attribs[i].getParamNameAsMember()+";\n");
}
@@ -1154,46 +1156,41 @@
// Adrian - seeing problems of losing data when clearing up,
// so temporarily remove this section, until such time as a
better
// solution is found
- // for(int i = 0; i< attribs.length;i++){
- // if(attribs[i].isArray()){
- // if ( attribs[i].isSimpleType())
- // {
- // writer.write("\tdelete
[]
- //
(("+attribs[i].getTypeName()+"*)"+attribs[i].getParamNameAsMember()+".m_Array);\n");
- // }
- // else
- // {
- // if( isNillable())
- // {
- //
writer.write("\tdelete
- // "+attribs[i].getParamNameAsMember()+".m_Array;\n");
- // }
- // else
- // {
- //
writer.write("\tdelete []
- //
(("+attribs[i].getTypeName()+"*)"+attribs[i].getParamNameAsMember()+".m_Array);\n");
- // }
- // }
- // }
- // else if (attribs[i].isAnyType()){
- // writer.write("\tif
("+attribs[i].getParamNameAsMember()+") \n\t{
- // \n");
- // writer.write("\t\tfor (int i=0;
- // i<"+attribs[i].getParamNameAsMember()+"->_size;
i++)\n\t\t{\n");
- // writer.write("\t\t\tif
- // ("+attribs[i].getParamNameAsMember()+"->_array[i]) delete []
- // "+attribs[i].getParamNameAsMember()+"->_array[i];\n");
- // writer.write("\t\t}\n");
- // writer.write("\t\tdelete
- // "+attribs[i].getParamNameAsMember()+";\n");
- // writer.write("\t}\n");
- //
- // }
- // else if (!attribs[i].isSimpleType()){
- // writer.write("\tdelete
- // "+attribs[i].getParamNameAsMember()+";\n");
- // }
- // }
+ for(int i = 0; i< attribs.length;i++){
+ if(attribs[i].isArray()){
+ if ( attribs[i].isSimpleType())
+ {
+ writer.write("\tdelete []
(("+attribs[i].getTypeName()+"*)"+attribs[i].getParamNameAsMember()+".m_Array);\n");
+ }
+ else
+ {
+ if( isNillable())
+ {
+ writer.write("\tdelete
"+attribs[i].getParamNameAsMember()+".m_Array;\n");
+ }
+ else
+ {
+ writer.write("\tdelete
[]
(("+attribs[i].getTypeName()+"*)"+attribs[i].getParamNameAsMember()+".m_Array);\n");
+ }
+ }
+ }
+ else if (attribs[i].isAnyType()){
+ writer.write("\tif
("+attribs[i].getParamNameAsMember()+") \n\t{\n");
+ writer.write("\t\tfor (int i=0;
i<"+attribs[i].getParamNameAsMember()+"->_size; i++)\n\t\t{\n");
+ writer.write("\t\t\tif
("+attribs[i].getParamNameAsMember()+"->_array[i]) delete []
"+attribs[i].getParamNameAsMember()+"->_array[i];\n");
+ writer.write("\t\t}\n");
+ writer.write("\t\tdelete
"+attribs[i].getParamNameAsMember()+";\n");
+ writer.write("\t}\n");
+
+ }
+ else if (!attribs[i].isSimpleType()){
+ writer.write("\tdelete
"+attribs[i].getParamNameAsMember()+";\n");
+ } else if
(CUtils.isPointerType(attribs[i].getTypeName())) {
+ // found pointer type
+ // System.out.println("Pointer type
found " + attribs[i].getTypeName() + " " + attribs[i].getParamNameAsMember());
+ writer.write("\tdelete
"+attribs[i].getParamNameAsMember()+";\n");
+ }
+ }
writer.write("}\n");
}
catch (IOException e)