Program: 122102
Project: 122102
Buggy source:
private void showErrorMarkForPerl(IElement elem){
  if (elem instanceof IGraphicalNode) {
    IGraphicalNode errorNode=(IGraphicalNode)elem;
    if (errorNode == null) {
      return;
    }
    StringBuffer errorMessage=new StringBuffer(256);
    if (proForPerlErrorMark != null && proForPerlErrorMark.size() > 0) {
      Set<Map.Entry<String,Problem>> set=proForPerlErrorMark.entrySet();
      for (Iterator<Map.Entry<String,Problem>> ite=set.iterator(); ite.hasNext(); ) {
        Map.Entry<String,Problem> tmp=ite.next();
        if (tmp == null) {
          continue;
        }
        Problem pro=tmp.getValue();
        if (pro == null) {
          continue;
        }
        String description=pro.getDescription();
        if (!"String_Node_Str".equals(description) && description != null) {
          errorMessage.append(description.replaceFirst("String_Node_Str","String_Node_Str"));
          errorMessage.append("String_Node_Str");
        }
      }
      if ((!"String_Node_Str".equals(errorMessage.toString())) && errorMessage != null) {
        if (errorNode.isCheckProperty() == false) {
          errorNode.setCheckProperty(true);
          errorNode.setErrorFlag(true);
          errorNode.setCompareFlag(false);
          errorNode.setErrorInfo(errorMessage.toString());
          ((Node)errorNode).getNodeError().updateState("String_Node_Str",true);
          errorNode.setErrorInfoChange("String_Node_Str",true);
        }
      }
 else {
        if (errorNode.isCheckProperty()) {
          errorNode.setCheckProperty(false);
          errorNode.setErrorFlag(false);
          errorNode.setCompareFlag(false);
          errorNode.setErrorInfo(null);
          ((Node)errorNode).getNodeError().updateState("String_Node_Str",false);
          errorNode.setErrorInfoChange("String_Node_Str",false);
        }
      }
    }
 else {
      if (errorNode.isCheckProperty()) {
        errorNode.setCheckProperty(false);
        errorNode.setErrorFlag(false);
        errorNode.setCompareFlag(false);
        errorNode.setErrorInfo(null);
        ((Node)errorNode).getNodeError().updateState("String_Node_Str",false);
        errorNode.setErrorInfoChange("String_Node_Str",false);
      }
    }
  }
}

Fixed version (ground truth):
private void showErrorMarkForPerl(IElement elem){
  if (elem instanceof IGraphicalNode) {
    IGraphicalNode errorNode=(IGraphicalNode)elem;
    if (errorNode == null) {
      return;
    }
    StringBuffer errorMessage=new StringBuffer(256);
    if (proForPerlErrorMark != null && proForPerlErrorMark.size() > 0) {
      Set<Map.Entry<String,Problem>> set=proForPerlErrorMark.entrySet();
      for (      Entry<String,Problem> tmp : set) {
        if (tmp == null) {
          continue;
        }
        Problem pro=tmp.getValue();
        if (pro == null) {
          continue;
        }
        String description=pro.getDescription();
        if (!"String_Node_Str".equals(description) && description != null) {
          errorMessage.append(description.replaceFirst("String_Node_Str","String_Node_Str"));
          errorMessage.append("String_Node_Str");
        }
      }
      if ((!"String_Node_Str".equals(errorMessage.toString())) && errorMessage != null) {
        if (errorNode.isCheckProperty() == false) {
          errorNode.setCheckProperty(true);
          errorNode.setErrorFlag(true);
          errorNode.setCompareFlag(false);
          errorNode.setErrorInfo(errorMessage.toString());
          ((Node)errorNode).getNodeError().updateState("String_Node_Str",true);
          errorNode.setErrorInfoChange("String_Node_Str",true);
        }
      }
 else {
        if (errorNode.isCheckProperty()) {
          errorNode.setCheckProperty(false);
          errorNode.setErrorFlag(false);
          errorNode.setCompareFlag(false);
          errorNode.setErrorInfo(null);
          ((Node)errorNode).getNodeError().updateState("String_Node_Str",false);
          errorNode.setErrorInfoChange("String_Node_Str",false);
        }
      }
    }
 else {
      if (errorNode.isCheckProperty()) {
        errorNode.setCheckProperty(false);
        errorNode.setErrorFlag(false);
        errorNode.setCompareFlag(false);
        errorNode.setErrorInfo(null);
        ((Node)errorNode).getNodeError().updateState("String_Node_Str",false);
        errorNode.setErrorInfoChange("String_Node_Str",false);
      }
    }
  }
}