Program: 6496
Project: 6496
Buggy source:
/** 
 * Generate code for EXI deserialization with C++. The code is created individually for each bean object.
 * @param elementMetadata Queue with metadata of XML elements
 * @param exiGrammar Object with schema-informed EXI grammar
 * @throws Exception Error during code generation
 */
private void generateDeserializeCode(final Queue<ElementMetadata> elementMetadata,Grammar exiGrammar) throws Exception {
  CppVar typeObject=CppVar.factory.create(Cpp.NONE,this.beanClassName + "String_Node_Str","String_Node_Str");
  CppVar streamObject=CppVar.factory.create(Cpp.NONE,"String_Node_Str","String_Node_Str");
  CppVar functionPointer=CppVar.factory.create(Cpp.NONE,"String_Node_Str","String_Node_Str");
  CppFun deserialize=CppFun.factory.create("String_Node_Str","String_Node_Str",typeObject,streamObject,functionPointer);
  String deserializerCode="String_Node_Str";
  while (!elementMetadata.isEmpty()) {
    ElementMetadata element=elementMetadata.poll();
    deserializerCode+=CppEXIConverter.createNiceCommentDelimiter(String.format("String_Node_Str",element.getElementName())) + "String_Node_Str";
    deserializerCode+=String.format("String_Node_Str" + "String_Node_Str",element.getElementCppType(),element.getElementName().toLowerCase());
switch (element.getType()) {
case ElementMetadata.XML_ATOMIC_VALUE:
      deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",element.getElementEXIType(),element.getElementName().toLowerCase(),element.getElementName(),element.getElementName().toLowerCase());
    break;
case ElementMetadata.XML_LOCAL_ELEMENT:
  deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",element.getElementEXIType(),element.getElementName().toLowerCase(),element.getParentName(),element.getElementName(),element.getElementName().toLowerCase());
break;
case ElementMetadata.XML_ARRAY:
deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",0,element.getParentName(),element.getElementName(),element.getElementEXIType(),element.getElementName().toLowerCase(),element.getParentName(),element.getElementName(),element.getElementName().toLowerCase());
break;
case ElementMetadata.XML_LIST:
deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",element.getElementName(),element.getElementEXIType(),element.getElementName().toLowerCase(),element.getElementName(),element.getElementName().toLowerCase());
break;
default :
throw new FabricEXIException("String_Node_Str");
}
}
String methodBody=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",deserializerCode);
deserialize.appendCode(methodBody);
deserialize.setComment(new CCommentImpl(String.format("String_Node_Str",this.beanClassName)));
this.serializerClass.add(Cpp.PUBLIC,deserialize);
}

Fixed version (ground truth):
/** 
 * Generate code for EXI deserialization with C++. The code is created individually for each bean object.
 * @param elementMetadata Queue with metadata of XML elements
 * @param exiGrammar Object with schema-informed EXI grammar
 * @throws Exception Error during code generation
 */
private void generateDeserializeCode(final Queue<ElementMetadata> elementMetadata,Grammar exiGrammar) throws Exception {
  CppVar typeObject=CppVar.factory.create(Cpp.NONE,this.beanClassName + "String_Node_Str","String_Node_Str");
  CppVar streamObject=CppVar.factory.create(Cpp.NONE,"String_Node_Str","String_Node_Str");
  CppVar functionPointer=CppVar.factory.create(Cpp.NONE,"String_Node_Str","String_Node_Str");
  CppFun deserialize=CppFun.factory.create("String_Node_Str","String_Node_Str",typeObject,streamObject,functionPointer);
  String deserializerCode="String_Node_Str";
  while (!elementMetadata.isEmpty()) {
    ElementMetadata element=elementMetadata.poll();
    deserializerCode+=CppEXIConverter.createNiceCommentDelimiter(String.format("String_Node_Str",element.getElementName())) + "String_Node_Str";
    deserializerCode+=String.format("String_Node_Str" + "String_Node_Str",element.getElementCppType(),element.getElementName().toLowerCase());
switch (element.getType()) {
case ElementMetadata.XML_ATOMIC_VALUE:
      deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",element.getElementEXIType(),element.getElementName().toLowerCase(),this.firstLetterCapital(element.getElementName()),element.getElementName().toLowerCase());
    break;
case ElementMetadata.XML_LOCAL_ELEMENT:
  deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",element.getElementEXIType(),element.getElementName().toLowerCase(),this.firstLetterCapital(element.getParentName()),this.firstLetterCapital(element.getElementName()),element.getElementName().toLowerCase());
break;
case ElementMetadata.XML_ARRAY:
deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",0,this.firstLetterCapital(element.getParentName()),this.firstLetterCapital(element.getElementName()),element.getElementEXIType(),element.getElementName().toLowerCase(),this.firstLetterCapital(element.getParentName()),this.firstLetterCapital(element.getElementName()),element.getElementName().toLowerCase());
break;
case ElementMetadata.XML_LIST:
deserializerCode+=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",this.firstLetterCapital(element.getElementName()),element.getElementEXIType(),element.getElementName().toLowerCase(),this.firstLetterCapital(element.getElementName()),element.getElementName().toLowerCase());
break;
default :
throw new FabricEXIException("String_Node_Str");
}
}
String methodBody=String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",deserializerCode);
deserialize.appendCode(methodBody);
deserialize.setComment(new CCommentImpl(String.format("String_Node_Str",this.beanClassName)));
this.serializerClass.add(Cpp.PUBLIC,deserialize);
}