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 cb...@apache.org on 2005/06/28 20:23:20 UTC

cvs commit: ws-axis/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal BeanParamWriter.java

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)