Program: 4401
Project: 4401
Buggy source:
/** 
 * Save setting information to property file We want to NOT save any properties which are the default value, as well as any older properties that are no longer in use. To avoid having to manually encode the file, we clone the existing properties and manually remove the ones which are default and aren't required to be saved. It is important to do it this way (as opposed to creating a new properties object and adding only those that should be saved or aren't default) because 'adding' properties may fail if certain settings classes haven't been statically loaded yet. (Note that we cannot use 'store' since it's only available in 1.2)
 */
public synchronized void save(){
  Properties toSave=(Properties)PROPS.clone();
  Iterator ii=settings.iterator();
  while (ii.hasNext()) {
    Setting set=(Setting)ii.next();
    if (!set.shouldAlwaysSave() && set.isDefault())     toSave.remove(set.getKey());
  }
  OutputStream out=null;
  try {
    if (SETTINGS_FILE.isDirectory())     SETTINGS_FILE.delete();
    File parent=FileUtils.getParentFile(SETTINGS_FILE);
    if (parent != null) {
      parent.mkdirs();
      FileUtils.setWriteable(parent);
    }
    FileUtils.setWriteable(SETTINGS_FILE);
    out=new BufferedOutputStream(new FileOutputStream(SETTINGS_FILE));
    toSave.store(out,HEADING);
  }
 catch (  FileNotFoundException e) {
    ErrorService.error(e);
  }
catch (  IOException e) {
    ErrorService.error(e);
  }
 finally {
    if (out != null) {
      try {
        out.close();
      }
 catch (      IOException ignored) {
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Save setting information to property file We want to NOT save any properties which are the default value, as well as any older properties that are no longer in use. To avoid having to manually encode the file, we clone the existing properties and manually remove the ones which are default and aren't required to be saved. It is important to do it this way (as opposed to creating a new properties object and adding only those that should be saved or aren't default) because 'adding' properties may fail if certain settings classes haven't been statically loaded yet. (Note that we cannot use 'store' since it's only available in 1.2)
 */
public synchronized void save(){
  Properties toSave=(Properties)PROPS.clone();
  Iterator ii=settings.iterator();
  while (ii.hasNext()) {
    Setting set=(Setting)ii.next();
    if (!set.shouldAlwaysSave() && set.isDefault())     toSave.remove(set.getKey());
  }
  OutputStream out=null;
  try {
    if (SETTINGS_FILE.isDirectory())     SETTINGS_FILE.delete();
    File parent=FileUtils.getParentFile(SETTINGS_FILE);
    if (parent != null) {
      parent.mkdirs();
      FileUtils.setWriteable(parent);
    }
    FileUtils.setWriteable(SETTINGS_FILE);
    try {
      out=new BufferedOutputStream(new FileOutputStream(SETTINGS_FILE));
    }
 catch (    IOException ioe) {
      SETTINGS_FILE.delete();
      out=new BufferedOutputStream(new FileOutputStream(SETTINGS_FILE));
    }
    toSave.store(out,HEADING);
  }
 catch (  IOException e) {
    ErrorService.error(e);
  }
 finally {
    if (out != null) {
      try {
        out.close();
      }
 catch (      IOException ignored) {
      }
    }
  }
}