whitlock    2005/07/08 03:56:19

  Modified:    c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal
                        BeanParamWriter.java
  Log:
  Avoid using memset on an array of objects. Instead create a vanilla object 
initialised to its default values and assign each object in this array to this 
vanilla object.
  
  Revision  Changes    Path
  1.83      +6 -4      
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.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- BeanParamWriter.java      8 Jul 2005 09:57:57 -0000       1.82
  +++ BeanParamWriter.java      8 Jul 2005 10:56:18 -0000       1.83
  @@ -854,7 +854,7 @@
                                       + "\t\t\t\t\t\t\t\t  \""
                                       + attribs[i].getElementNameAsString()
                                       + "\", Axis_URI_" + arrayType + 
");\n\n");
  -                    writer.write("\t// Additional code to find is reference 
is pointer or pointer to a pointer\n");
  +                    writer.write("\t// Additional code to find if reference 
is pointer or pointer to a pointer\n");
   
                       if (nillable)
                       {
  @@ -873,9 +873,10 @@
                           writer.write("\t\tparam->" + attributeParamName
                                   + ".m_Array = pp" + i + ";\n");
                           writer.write("\t}\n\n");
  -                        writer.write("\t" + attributeTypeName + " *  p" + i
  +                        writer.write("\t" + attributeTypeName + " *p" + i
                                   + " = (" + attributeTypeName
  -                                + " *) array.m_Array;\n\n");
  +                                + " *) array.m_Array;\n");
  +                             writer.write("\t" + attributeTypeName + " 
default" + i + ";\n");
                           writer.write("\tfor( int iCount" + i + " = 0; iCount"
                                   + i + " < array.m_Size; iCount" + i + 
"++)\n");
                           writer.write("\t{\n");
  @@ -883,8 +884,9 @@
                                   + attributeTypeName + "();\n");
                           writer.write("\t\t*(pp" + i + "[iCount" + i + "]) = 
p"
                                   + i + "[iCount" + i + "];\n");
  +                             writer.write("\t\t// Set the array to default 
values so that the delete does not delete subfields\n");
  +                             writer.write("\t\tp" + i + "[iCount" + i + "] = 
default" + i + ";\n");
                           writer.write("\t}\n");
  -                             writer.write("\tmemset(p" + i + ", 0, sizeof(" 
+ attributeTypeName + ")*array.m_Size);\n");
                           writer.write("\tdelete [] p" + i + ";\n");
                       }
                       else
  
  
  

Reply via email to