Program: 121268
Project: 121268
Buggy source:
@Override public String[] getCommandLine() throws ProcessorException {
  String command;
  try {
    command=getInterpreter();
  }
 catch (  ProcessorException e1) {
    command="String_Node_Str";
  }
  boolean win32=false;
  String classPathSeparator;
  if (targetPlatform == null) {
    targetPlatform=Platform.getOS();
    win32=Platform.OS_WIN32.equals(targetPlatform);
    classPathSeparator=JavaUtils.JAVA_CLASSPATH_SEPARATOR;
  }
 else {
    win32=targetPlatform.equals(Platform.OS_WIN32);
    if (win32) {
      classPathSeparator="String_Node_Str";
    }
 else {
      classPathSeparator="String_Node_Str";
    }
  }
  boolean exportingJob=ProcessorUtilities.isExportConfig();
  Set<String> neededLibraries=JavaProcessorUtilities.getNeededLibrariesForProcess(process);
  if (!exportingJob) {
    JavaProcessorUtilities.addLog4jToJarList(neededLibraries);
  }
  JavaProcessorUtilities.checkJavaProjectLib(neededLibraries);
  String unixRootPathVar="String_Node_Str";
  String unixRootPath=unixRootPathVar + "String_Node_Str";
  StringBuffer libPath=new StringBuffer();
  File libDir=JavaProcessorUtilities.getJavaProjectLibFolder();
  File[] jarFiles=libDir.listFiles(FilesUtils.getAcceptJARFilesFilter());
  if (jarFiles != null && jarFiles.length > 0) {
    for (    File jarFile : jarFiles) {
      if (jarFile.isFile() && neededLibraries.contains(jarFile.getName())) {
        if (!win32 && exportingJob) {
          libPath.append(unixRootPath);
        }
        String singleLibPath=new Path(jarFile.getAbsolutePath()).toPortableString();
        if (exportingJob) {
          singleLibPath=singleLibPath.replace(new Path(libDir.getAbsolutePath()).toPortableString(),"String_Node_Str");
        }
        libPath.append(singleLibPath).append(classPathSeparator);
      }
    }
  }
  if (!exportingJob) {
    libPath.append("String_Node_Str").append(classPathSeparator);
  }
  String projectPath;
  if (exportingJob) {
    projectPath=getCodeLocation();
    if (projectPath != null) {
      projectPath=projectPath.replace(ProcessorUtilities.TEMP_JAVA_CLASSPATH_SEPARATOR,classPathSeparator);
    }
  }
 else {
    IFolder classesFolder=JavaProcessorUtilities.getJavaProject().getProject().getFolder(JavaUtils.JAVA_CLASSES_DIRECTORY);
    IPath projectFolderPath=classesFolder.getFullPath().removeFirstSegments(1);
    projectPath=Path.fromOSString(getCodeProject().getLocation().toOSString()).append(projectFolderPath).toOSString() + classPathSeparator;
  }
  IPath classPath=getCodePath().removeFirstSegments(1);
  String className=classPath.toString().replace('/','.');
  String exportJar="String_Node_Str";
  if (exportingJob) {
    String version="String_Node_Str";
    if (process.getVersion() != null) {
      version="String_Node_Str" + process.getVersion();
      version=version.replace("String_Node_Str","String_Node_Str");
    }
    exportJar=classPathSeparator + (!win32 && exportingJob ? unixRootPath : "String_Node_Str") + process.getName().toLowerCase()+ version+ "String_Node_Str"+ classPathSeparator;
    JobInfo lastMainJob=LastGenerationInfo.getInstance().getLastMainJob();
    Set<JobInfo> infos=null;
    if (lastMainJob == null && property != null) {
      infos=ProcessorUtilities.getChildrenJobInfo((ProcessItem)property.getItem());
    }
 else {
      infos=LastGenerationInfo.getInstance().getLastGeneratedjobs();
    }
    for (    JobInfo jobInfo : infos) {
      if (lastMainJob != null && lastMainJob.equals(jobInfo)) {
        continue;
      }
      if (jobInfo.getJobVersion() != null) {
        version="String_Node_Str" + jobInfo.getJobVersion();
        version=version.replace("String_Node_Str","String_Node_Str");
      }
      exportJar+=(!win32 && exportingJob ? unixRootPath : "String_Node_Str") + jobInfo.getJobName().toLowerCase() + version+ "String_Node_Str"+ classPathSeparator;
    }
  }
  String libFolder="String_Node_Str";
  if (exportingJob) {
    String tmp=this.getCodeLocation();
    tmp=tmp.replace(ProcessorUtilities.TEMP_JAVA_CLASSPATH_SEPARATOR,classPathSeparator);
    libFolder=new Path(tmp) + classPathSeparator;
  }
 else {
    libFolder=new Path(libDir.getAbsolutePath()).toPortableString() + classPathSeparator;
  }
  String portableCommand=new Path(command).toPortableString();
  String portableProjectPath=new Path(projectPath).toPortableString();
  if (!win32 && exportingJob) {
    portableProjectPath=unixRootPathVar + classPathSeparator + portableProjectPath;
    String libraryPath=ProcessorUtilities.getLibraryPath();
    if (libraryPath != null) {
      portableProjectPath=portableProjectPath.replace(libraryPath,unixRootPath + libraryPath);
      libFolder=libFolder.replace(libraryPath,unixRootPath + libraryPath);
    }
  }
  String[] strings;
  List<String> tmpParams=new ArrayList<String>();
  tmpParams.add(portableCommand);
  String[] proxyParameters=getProxyParameters();
  if (proxyParameters != null && proxyParameters.length > 0) {
    for (    String str : proxyParameters) {
      tmpParams.add(str);
    }
  }
  tmpParams.add("String_Node_Str");
  if (exportingJob) {
    tmpParams.add(libPath.toString() + portableProjectPath + exportJar);
  }
 else {
    tmpParams.add(libPath.toString() + portableProjectPath + exportJar+ libFolder);
  }
  tmpParams.add(className);
  strings=tmpParams.toArray(new String[0]);
  String[] cmd2=addVMArguments(strings,exportingJob);
  if (!exportingJob) {
    return cmd2;
  }
 else {
    List<String> list=new ArrayList<String>();
    if ("String_Node_Str".equals(classPathSeparator)) {
      list.add("String_Node_Str");
      list.add("String_Node_Str");
    }
 else {
      list.add("String_Node_Str");
      list.add("String_Node_Str");
    }
    list.addAll(Arrays.asList(cmd2));
    return list.toArray(new String[0]);
  }
}

Fixed version (ground truth):
@Override public String[] getCommandLine() throws ProcessorException {
  String command;
  try {
    command=getInterpreter();
  }
 catch (  ProcessorException e1) {
    command="String_Node_Str";
  }
  boolean win32=false;
  String classPathSeparator;
  if (targetPlatform == null) {
    targetPlatform=Platform.getOS();
    win32=Platform.OS_WIN32.equals(targetPlatform);
    classPathSeparator=JavaUtils.JAVA_CLASSPATH_SEPARATOR;
  }
 else {
    win32=targetPlatform.equals(Platform.OS_WIN32);
    if (win32) {
      classPathSeparator="String_Node_Str";
    }
 else {
      classPathSeparator="String_Node_Str";
    }
  }
  boolean exportingJob=ProcessorUtilities.isExportConfig();
  Set<String> neededLibraries=JavaProcessorUtilities.getNeededLibrariesForProcess(process);
  if (!exportingJob) {
    JavaProcessorUtilities.addLog4jToJarList(neededLibraries);
  }
  JavaProcessorUtilities.checkJavaProjectLib(neededLibraries);
  String unixRootPathVar="String_Node_Str";
  String unixRootPath=unixRootPathVar + "String_Node_Str";
  StringBuffer libPath=new StringBuffer();
  if (!win32 && exportingJob) {
    libPath.append("String_Node_Str");
  }
  File libDir=JavaProcessorUtilities.getJavaProjectLibFolder();
  File[] jarFiles=libDir.listFiles(FilesUtils.getAcceptJARFilesFilter());
  if (jarFiles != null && jarFiles.length > 0) {
    for (    File jarFile : jarFiles) {
      if (jarFile.isFile() && neededLibraries.contains(jarFile.getName())) {
        if (!win32 && exportingJob) {
          libPath.append(unixRootPath);
        }
        String singleLibPath=new Path(jarFile.getAbsolutePath()).toPortableString();
        if (exportingJob) {
          singleLibPath=singleLibPath.replace(new Path(libDir.getAbsolutePath()).toPortableString(),"String_Node_Str");
        }
        libPath.append(singleLibPath).append(classPathSeparator);
      }
    }
  }
  if (!exportingJob) {
    libPath.append("String_Node_Str").append(classPathSeparator);
  }
  String projectPath;
  if (exportingJob) {
    projectPath=getCodeLocation();
    if (projectPath != null) {
      projectPath=projectPath.replace(ProcessorUtilities.TEMP_JAVA_CLASSPATH_SEPARATOR,classPathSeparator);
    }
  }
 else {
    IFolder classesFolder=JavaProcessorUtilities.getJavaProject().getProject().getFolder(JavaUtils.JAVA_CLASSES_DIRECTORY);
    IPath projectFolderPath=classesFolder.getFullPath().removeFirstSegments(1);
    projectPath=Path.fromOSString(getCodeProject().getLocation().toOSString()).append(projectFolderPath).toOSString() + classPathSeparator;
  }
  IPath classPath=getCodePath().removeFirstSegments(1);
  String className=classPath.toString().replace('/','.');
  String exportJar="String_Node_Str";
  if (exportingJob) {
    String version="String_Node_Str";
    if (process.getVersion() != null) {
      version="String_Node_Str" + process.getVersion();
      version=version.replace("String_Node_Str","String_Node_Str");
    }
    exportJar=classPathSeparator + (!win32 && exportingJob ? unixRootPath : "String_Node_Str") + process.getName().toLowerCase()+ version+ "String_Node_Str"+ classPathSeparator;
    JobInfo lastMainJob=LastGenerationInfo.getInstance().getLastMainJob();
    Set<JobInfo> infos=null;
    if (lastMainJob == null && property != null) {
      infos=ProcessorUtilities.getChildrenJobInfo((ProcessItem)property.getItem());
    }
 else {
      infos=LastGenerationInfo.getInstance().getLastGeneratedjobs();
    }
    for (    JobInfo jobInfo : infos) {
      if (lastMainJob != null && lastMainJob.equals(jobInfo)) {
        continue;
      }
      if (jobInfo.getJobVersion() != null) {
        version="String_Node_Str" + jobInfo.getJobVersion();
        version=version.replace("String_Node_Str","String_Node_Str");
      }
      exportJar+=(!win32 && exportingJob ? unixRootPath : "String_Node_Str") + jobInfo.getJobName().toLowerCase() + version+ "String_Node_Str"+ classPathSeparator;
    }
  }
  if (!win32 && exportingJob) {
    exportJar=exportJar + "String_Node_Str";
  }
  String libFolder="String_Node_Str";
  if (exportingJob) {
    String tmp=this.getCodeLocation();
    tmp=tmp.replace(ProcessorUtilities.TEMP_JAVA_CLASSPATH_SEPARATOR,classPathSeparator);
    libFolder=new Path(tmp) + classPathSeparator;
  }
 else {
    libFolder=new Path(libDir.getAbsolutePath()).toPortableString() + classPathSeparator;
  }
  String portableCommand=new Path(command).toPortableString();
  String portableProjectPath=new Path(projectPath).toPortableString();
  if (!win32 && exportingJob) {
    portableProjectPath=unixRootPathVar + classPathSeparator + portableProjectPath;
    String libraryPath=ProcessorUtilities.getLibraryPath();
    if (libraryPath != null) {
      portableProjectPath=portableProjectPath.replace(libraryPath,unixRootPath + libraryPath);
      libFolder=libFolder.replace(libraryPath,unixRootPath + libraryPath);
    }
  }
  String[] strings;
  List<String> tmpParams=new ArrayList<String>();
  tmpParams.add(portableCommand);
  String[] proxyParameters=getProxyParameters();
  if (proxyParameters != null && proxyParameters.length > 0) {
    for (    String str : proxyParameters) {
      tmpParams.add(str);
    }
  }
  tmpParams.add("String_Node_Str");
  if (exportingJob) {
    tmpParams.add(libPath.toString() + portableProjectPath + exportJar);
  }
 else {
    tmpParams.add(libPath.toString() + portableProjectPath + exportJar+ libFolder);
  }
  tmpParams.add(className);
  strings=tmpParams.toArray(new String[0]);
  String[] cmd2=addVMArguments(strings,exportingJob);
  if (!exportingJob) {
    return cmd2;
  }
 else {
    List<String> list=new ArrayList<String>();
    if ("String_Node_Str".equals(classPathSeparator)) {
      list.add("String_Node_Str");
      list.add("String_Node_Str");
    }
 else {
      list.add("String_Node_Str");
      list.add("String_Node_Str");
    }
    list.addAll(Arrays.asList(cmd2));
    return list.toArray(new String[0]);
  }
}