Program: 100821
Project: 100821
Buggy source:
private void processFile(String currentFile) throws DITAOTException {
  File fileToParse;
  final File file=new File(currentFile);
  if (file.isAbsolute()) {
    fileToParse=file;
    currentFile=FileUtils.getRelativePathFromMap(rootFile,currentFile);
  }
 else {
    fileToParse=new File(baseInputDir,currentFile);
  }
  logger.logInfo("String_Node_Str" + fileToParse.getAbsolutePath());
  String msg=null;
  final Properties params=new Properties();
  params.put("String_Node_Str",currentFile);
  if (!fileToParse.exists()) {
    logger.logError(MessageUtils.getMessage("String_Node_Str",params).toString());
    return;
  }
  try {
    fileToParse=fileToParse.getCanonicalFile();
    if (FileUtils.isValidTarget(currentFile.toLowerCase())) {
      reader.setTranstype(transtype);
      reader.setCurrentDir(new File(currentFile).getParent());
      reader.parse(fileToParse);
    }
 else {
      final Properties prop=new Properties();
      prop.put("String_Node_Str",fileToParse);
      logger.logWarn(MessageUtils.getMessage("String_Node_Str",params).toString());
    }
    if (reader.isValidInput()) {
      processParseResult(currentFile);
      categorizeCurrentFile(currentFile);
    }
 else     if (!currentFile.equals(inputFile)) {
      logger.logWarn(MessageUtils.getMessage("String_Node_Str",params).toString());
    }
  }
 catch (  final SAXParseException sax) {
    final Exception inner=sax.getException();
    if (inner != null && inner instanceof DITAOTException) {
      logger.logInfo(inner.getMessage());
      throw (DITAOTException)inner;
    }
    if (currentFile.equals(inputFile)) {
      final MessageBean msgBean=MessageUtils.getMessage("String_Node_Str",params);
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      msg=new StringBuffer(msg).append("String_Node_Str").append(sax.getMessage()).toString();
      throw new DITAOTException(msgBean,sax,msg);
    }
    final StringBuffer buff=new StringBuffer();
    msg=MessageUtils.getMessage("String_Node_Str",params).toString();
    buff.append(msg).append(LINE_SEPARATOR).append(sax.getMessage());
    logger.logError(buff.toString());
  }
catch (  final Exception e) {
    if (currentFile.equals(inputFile)) {
      final MessageBean msgBean=MessageUtils.getMessage("String_Node_Str",params);
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      msg=new StringBuffer(msg).append("String_Node_Str").append(e.getMessage()).toString();
      throw new DITAOTException(msgBean,e,msg);
    }
    final StringBuffer buff=new StringBuffer();
    msg=MessageUtils.getMessage("String_Node_Str",params).toString();
    buff.append(msg).append(LINE_SEPARATOR).append(e.getMessage());
    logger.logError(buff.toString());
  }
  if (!reader.isValidInput() && currentFile.equals(inputFile)) {
    if (xmlValidate == true) {
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      throw new DITAOTException(msg);
    }
 else {
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      throw new DITAOTException(msg);
    }
  }
  doneList.add(currentFile);
  reader.reset();
}

Fixed version (ground truth):
private void processFile(String currentFile) throws DITAOTException {
  File fileToParse;
  final File file=new File(currentFile);
  if (file.isAbsolute()) {
    fileToParse=file;
    currentFile=FileUtils.getRelativePathFromMap(rootFile,currentFile);
  }
 else {
    fileToParse=new File(baseInputDir,currentFile);
  }
  try {
    fileToParse=fileToParse.getCanonicalFile();
  }
 catch (  IOException e1) {
    logger.logError(e1.toString());
  }
  logger.logInfo("String_Node_Str" + fileToParse.getAbsolutePath());
  String msg=null;
  final Properties params=new Properties();
  params.put("String_Node_Str",currentFile);
  if (!fileToParse.exists()) {
    logger.logError(MessageUtils.getMessage("String_Node_Str",params).toString());
    return;
  }
  try {
    if (FileUtils.isValidTarget(currentFile.toLowerCase())) {
      reader.setTranstype(transtype);
      reader.setCurrentDir(new File(currentFile).getParent());
      reader.parse(fileToParse);
    }
 else {
      final Properties prop=new Properties();
      prop.put("String_Node_Str",fileToParse);
      logger.logWarn(MessageUtils.getMessage("String_Node_Str",params).toString());
    }
    if (reader.isValidInput()) {
      processParseResult(currentFile);
      categorizeCurrentFile(currentFile);
    }
 else     if (!currentFile.equals(inputFile)) {
      logger.logWarn(MessageUtils.getMessage("String_Node_Str",params).toString());
    }
  }
 catch (  final SAXParseException sax) {
    final Exception inner=sax.getException();
    if (inner != null && inner instanceof DITAOTException) {
      logger.logInfo(inner.getMessage());
      throw (DITAOTException)inner;
    }
    if (currentFile.equals(inputFile)) {
      final MessageBean msgBean=MessageUtils.getMessage("String_Node_Str",params);
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      msg=new StringBuffer(msg).append("String_Node_Str").append(sax.getMessage()).toString();
      throw new DITAOTException(msgBean,sax,msg);
    }
    final StringBuffer buff=new StringBuffer();
    msg=MessageUtils.getMessage("String_Node_Str",params).toString();
    buff.append(msg).append(LINE_SEPARATOR).append(sax.getMessage());
    logger.logError(buff.toString());
  }
catch (  final Exception e) {
    if (currentFile.equals(inputFile)) {
      final MessageBean msgBean=MessageUtils.getMessage("String_Node_Str",params);
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      msg=new StringBuffer(msg).append("String_Node_Str").append(e.getMessage()).toString();
      throw new DITAOTException(msgBean,e,msg);
    }
    final StringBuffer buff=new StringBuffer();
    msg=MessageUtils.getMessage("String_Node_Str",params).toString();
    buff.append(msg).append(LINE_SEPARATOR).append(e.getMessage());
    logger.logError(buff.toString());
  }
  if (!reader.isValidInput() && currentFile.equals(inputFile)) {
    if (xmlValidate == true) {
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      throw new DITAOTException(msg);
    }
 else {
      msg=MessageUtils.getMessage("String_Node_Str",params).toString();
      throw new DITAOTException(msg);
    }
  }
  doneList.add(currentFile);
  reader.reset();
}