Program: 56161
Project: 56161
Buggy source:
private void updateFiles(DefaultHttpClient httpClient,UpdateListener c) throws IOException, ClientProtocolException {
  c.setProgressState("String_Node_Str",-1);
  if (serverrev == null) {
    serverrev=loadRevision(httpClient);
  }
  final String url=SERVER_ROOT + "String_Node_Str";
  HttpGet httpRequest=new HttpGet(url);
  HttpResponse response=httpClient.execute(httpRequest);
  ZipInputStream inputStream=new ZipInputStream(response.getEntity().getContent());
  try {
    int files=0;
    byte[] buffer=new byte[1024];
    long size=response.getEntity().getContentLength();
    long read=0;
    ZipEntry entry;
    while ((entry=inputStream.getNextEntry()) != null) {
      String name=entry.getName();
      c.setProgressState("String_Node_Str",(float)read / size);
      if (name.startsWith(RESOURCE_PREFIX)) {
        String outfilename=destdir.getAbsolutePath() + "String_Node_Str" + name.substring(RESOURCE_PREFIX.length());
        File outfile=new File(outfilename);
        if (entry.isDirectory()) {
          if (outfile.exists() && !outfile.isDirectory()) {
            outfile.delete();
          }
          if (!outfile.isDirectory()) {
            outfile.mkdirs();
          }
        }
 else {
          File tmpFile=new File(outfilename + "String_Node_Str");
          tmpFile.getParentFile().mkdirs();
          tmpFile.deleteOnExit();
          FileOutputStream out=new FileOutputStream(tmpFile);
          while (true) {
            int len=inputStream.read(buffer);
            if (len <= 0) {
              break;
            }
            read+=len;
            out.write(buffer,0,len);
          }
          out.close();
          tmpFile.renameTo(outfile);
          files++;
        }
      }
    }
    System.out.println("String_Node_Str" + files + "String_Node_Str");
    writeMyVersion(getVersionFile(),serverrev);
    prefs.edit().putInt(PREF_REVISION,Revision.REVISION).putBoolean(PREF_OUTDATED,false).commit();
  }
 catch (  Throwable t) {
    t.printStackTrace();
  }
  setUpdating(false);
}

Fixed version (ground truth):
private void updateFiles(DefaultHttpClient httpClient,UpdateListener c) throws IOException, ClientProtocolException {
  c.setProgressState("String_Node_Str",-1);
  if (serverData == null) {
    serverData=loadRevision(httpClient);
  }
  final String url=SERVER_ROOT + "String_Node_Str";
  HttpGet httpRequest=new HttpGet(url);
  HttpResponse response=httpClient.execute(httpRequest);
  InputStream compressed=response.getEntity().getContent();
  ZipInputStream inputStream=new ZipInputStream(compressed);
  try {
    int files=0;
    byte[] buffer=new byte[1024];
    long read=0;
    ZipEntry entry;
    while ((entry=inputStream.getNextEntry()) != null) {
      String name=entry.getName();
      c.setProgressState("String_Node_Str",(float)read / serverData.size);
      System.out.println("String_Node_Str" + read + "String_Node_Str"+ serverData.size);
      if (name.startsWith(RESOURCE_PREFIX)) {
        String outfilename=destdir.getAbsolutePath() + "String_Node_Str" + name.substring(RESOURCE_PREFIX.length());
        File outfile=new File(outfilename);
        if (entry.isDirectory()) {
          if (outfile.exists() && !outfile.isDirectory()) {
            outfile.delete();
          }
          if (!outfile.isDirectory()) {
            outfile.mkdirs();
          }
        }
 else {
          File tmpFile=new File(outfilename + "String_Node_Str");
          tmpFile.getParentFile().mkdirs();
          tmpFile.deleteOnExit();
          FileOutputStream out=new FileOutputStream(tmpFile);
          while (true) {
            int len=inputStream.read(buffer);
            if (len <= 0) {
              break;
            }
            read+=len;
            out.write(buffer,0,len);
          }
          out.close();
          tmpFile.renameTo(outfile);
          files++;
        }
      }
    }
    System.out.println("String_Node_Str" + files + "String_Node_Str");
    prefs.edit().putInt(PREF_REVISION,REVISION).putBoolean(PREF_OUTDATED,false).putString(PREF_RESOURCEVERSION,serverData.revision).commit();
  }
 catch (  Throwable t) {
    t.printStackTrace();
  }
  setUpdating(false);
}