Program: 47279
Project: 47279
Buggy source:
/** 
 * Converts external subtitles file in SRT format to SSA/ASS format
 * @param SrtFile Subtitles file in SRT format
 * @param configuration UMS settings
 * @return Converted subtitles file in SSA/ASS format
 * @throws IOException
 */
public static File ConvertSrtToAss(String SrtFile,PmsConfiguration configuration) throws IOException {
  String dir=configuration.getDataFile(SUB_DIR);
  File path=new File(dir);
  if (!path.exists()) {
    path.mkdirs();
  }
  File outputSubs=new File(path.getAbsolutePath() + File.separator + new File(SrtFile).getName()+ "String_Node_Str");
  BufferedWriter output;
  BufferedReader input;
  try {
    if (configuration.getSubtitlesCodepage() == null) {
      input=new BufferedReader(new InputStreamReader(new FileInputStream(SrtFile)));
    }
 else {
      input=new BufferedReader(new InputStreamReader(new FileInputStream(SrtFile),configuration.getSubtitlesCodepage()));
    }
    output=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputSubs)));
    String line;
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    StringBuilder s=new StringBuilder();
    s.append("String_Node_Str");
    if (!configuration.getFont().isEmpty()) {
      s.append(configuration.getFont()).append("String_Node_Str");
    }
 else {
      s.append("String_Node_Str");
    }
    s.append(Integer.toString((int)(14 * Double.parseDouble(configuration.getAssScale())))).append("String_Node_Str");
    String primaryColour=Integer.toHexString(configuration.getSubsColor());
    primaryColour=primaryColour.substring(6,8) + primaryColour.substring(4,6) + primaryColour.substring(2,4);
    s.append("String_Node_Str").append(primaryColour).append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append(configuration.getAssOutline()).append("String_Node_Str");
    s.append(configuration.getAssShadow()).append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    output.write(s.toString() + "String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    String startTime;
    String endTime;
    while ((line=input.readLine()) != null) {
      if (line.contains("String_Node_Str")) {
        startTime=line.substring(0,line.indexOf("String_Node_Str") - 1).replaceAll("String_Node_Str","String_Node_Str");
        endTime=line.substring(line.indexOf("String_Node_Str") + 4).replaceAll("String_Node_Str","String_Node_Str");
        startTime=StringUtil.convertTimeToString(StringUtil.convertStringToTime(startTime),StringUtil.ASS_FORMAT);
        endTime=StringUtil.convertTimeToString(StringUtil.convertStringToTime(endTime),StringUtil.ASS_FORMAT);
        s=new StringBuilder();
        s.append("String_Node_Str");
        s.append(startTime).append("String_Node_Str");
        s.append(endTime).append("String_Node_Str");
        s.append("String_Node_Str").append("String_Node_Str");
        s.append(convertTags(input.readLine()));
        if (isNotBlank(line=input.readLine())) {
          s.append("String_Node_Str");
          s.append(convertTags(line));
        }
        output.write(s.toString() + "String_Node_Str");
      }
    }
  }
  finally {
  }
  input.close();
  output.flush();
  output.close();
  PMS.get().addTempFile(outputSubs,2 * 24 * 3600* 1000);
  return outputSubs;
}

Fixed version (ground truth):
/** 
 * Converts external subtitles file in SRT format to SSA/ASS format
 * @param SrtFile Subtitles file in SRT format
 * @param configuration UMS settings
 * @return Converted subtitles file in SSA/ASS format
 * @throws IOException
 */
public static File ConvertSrtToAss(String SrtFile,PmsConfiguration configuration) throws IOException {
  String dir=configuration.getDataFile(SUB_DIR);
  File path=new File(dir);
  if (!path.exists()) {
    path.mkdirs();
  }
  File outputSubs=new File(path.getAbsolutePath() + File.separator + new File(SrtFile).getName()+ "String_Node_Str");
  BufferedWriter output;
  BufferedReader input;
  try {
    if (isBlank(configuration.getSubtitlesCodepage())) {
      input=new BufferedReader(new InputStreamReader(new FileInputStream(SrtFile)));
    }
 else {
      input=new BufferedReader(new InputStreamReader(new FileInputStream(SrtFile),configuration.getSubtitlesCodepage()));
    }
    output=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputSubs)));
    String line;
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    StringBuilder s=new StringBuilder();
    s.append("String_Node_Str");
    if (!configuration.getFont().isEmpty()) {
      s.append(configuration.getFont()).append("String_Node_Str");
    }
 else {
      s.append("String_Node_Str");
    }
    s.append(Integer.toString((int)(14 * Double.parseDouble(configuration.getAssScale())))).append("String_Node_Str");
    String primaryColour=Integer.toHexString(configuration.getSubsColor());
    primaryColour=primaryColour.substring(6,8) + primaryColour.substring(4,6) + primaryColour.substring(2,4);
    s.append("String_Node_Str").append(primaryColour).append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append(configuration.getAssOutline()).append("String_Node_Str");
    s.append(configuration.getAssShadow()).append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    s.append("String_Node_Str");
    output.write(s.toString() + "String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    output.write("String_Node_Str");
    String startTime;
    String endTime;
    while ((line=input.readLine()) != null) {
      if (line.contains("String_Node_Str")) {
        startTime=line.substring(0,line.indexOf("String_Node_Str") - 1).replaceAll("String_Node_Str","String_Node_Str");
        endTime=line.substring(line.indexOf("String_Node_Str") + 4).replaceAll("String_Node_Str","String_Node_Str");
        startTime=StringUtil.convertTimeToString(StringUtil.convertStringToTime(startTime),StringUtil.ASS_FORMAT);
        endTime=StringUtil.convertTimeToString(StringUtil.convertStringToTime(endTime),StringUtil.ASS_FORMAT);
        s=new StringBuilder();
        s.append("String_Node_Str");
        s.append(startTime).append("String_Node_Str");
        s.append(endTime).append("String_Node_Str");
        s.append("String_Node_Str").append("String_Node_Str");
        s.append(convertTags(input.readLine()));
        if (isNotBlank(line=input.readLine())) {
          s.append("String_Node_Str");
          s.append(convertTags(line));
        }
        output.write(s.toString() + "String_Node_Str");
      }
    }
  }
  finally {
  }
  input.close();
  output.flush();
  output.close();
  PMS.get().addTempFile(outputSubs,2 * 24 * 3600* 1000);
  return outputSubs;
}