Program: 142384
Project: 142384
Buggy source:
@Override public Vector<Graphic> load(DataInputStream file) throws IOException {
  Vector<Graphic> inits=new Vector<Graphic>();
  try {
    file.skipBytes(4);
    int numGraphics=Util.leShort(file.readShort());
    file.skipBytes(2);
    inits.setSize(numGraphics + 1);
    inits.setElementAt(new Graphic(0,0,0,0,0,0,0,new int[0],0),0);
    int grh=Util.leShort(file.readShort());
    file.skipBytes(2);
    while (grh > 0) {
      int fileNum=0, sX=0, sY=0, numFrames, pixelWidth, pixelHeight, frames[]=new int[0];
      float speed=0.0f, tileWidth, tileHeight;
      numFrames=Util.leShort(file.readShort());
      if (numFrames > 1) {
        frames=new int[numFrames];
        for (int j=0; j < numFrames; j++) {
          frames[j]=Util.leShort(file.readShort());
          file.skipBytes(2);
          if (frames[j] <= 0)           throw new IOException("String_Node_Str" + frames[j]);
        }
        file.skipBytes(4);
        speed=(numFrames * 1000) / 60;
        if (speed <= 0)         throw new IOException("String_Node_Str");
        pixelWidth=inits.get(frames[0]).getPixelWidth();
        if (pixelWidth <= 0)         throw new IOException("String_Node_Str");
        pixelHeight=inits.get(frames[0]).getPixelHeight();
        if (pixelHeight <= 0)         throw new IOException("String_Node_Str");
        tileWidth=inits.get(frames[0]).getTileWidth();
        if (tileWidth <= 0)         throw new IOException("String_Node_Str");
        tileHeight=inits.get(frames[0]).getTileHeight();
        if (tileHeight <= 0)         throw new IOException("String_Node_Str");
      }
 else {
        fileNum=Util.leShort(file.readShort());
        file.skipBytes(2);
        if (fileNum <= 0)         throw new IOException("String_Node_Str");
        sX=Util.leShort(file.readShort());
        if (sX < 0)         throw new IOException("String_Node_Str");
        sY=Util.leShort(file.readShort());
        if (sY < 0)         throw new IOException("String_Node_Str");
        pixelWidth=Util.leShort(file.readShort());
        if (pixelWidth <= 0)         throw new IOException("String_Node_Str");
        pixelHeight=Util.leShort(file.readShort());
        if (pixelHeight <= 0)         throw new IOException("String_Node_Str");
        tileWidth=(float)pixelWidth / Tile.TILE_PIXEL_WIDTH;
        tileHeight=(float)pixelHeight / Tile.TILE_PIXEL_HEIGHT;
      }
      inits.setElementAt(new Graphic(sX,sY,fileNum,pixelWidth,pixelHeight,tileWidth,tileHeight,frames,speed),grh);
      grh=Util.leShort(file.readShort());
      file.skipBytes(2);
    }
  }
 catch (  EOFException ex) {
    return inits;
  }
  return null;
}

Fixed version (ground truth):
@Override public Vector<Graphic> load(DataInputStream file) throws IOException {
  Vector<Graphic> inits=new Vector<Graphic>();
  file.skipBytes(4);
  int numGraphics=Util.leShort(file.readShort());
  file.skipBytes(2);
  inits.setSize(numGraphics + 1);
  inits.setElementAt(new Graphic(0,0,0,0,0,0,0,new int[0],0),0);
  int grh=Util.leShort(file.readShort());
  file.skipBytes(2);
  try {
    while (grh > 0) {
      int fileNum=0, sX=0, sY=0, numFrames, pixelWidth, pixelHeight, frames[]=new int[0];
      float speed=0.0f, tileWidth, tileHeight;
      numFrames=Util.leShort(file.readShort());
      if (numFrames > 1) {
        frames=new int[numFrames];
        for (int j=0; j < numFrames; j++) {
          frames[j]=Util.leShort(file.readShort());
          file.skipBytes(2);
          if (frames[j] <= 0)           throw new IOException("String_Node_Str" + frames[j]);
        }
        file.skipBytes(4);
        speed=(numFrames * 1000) / 60;
        if (speed <= 0)         throw new IOException("String_Node_Str");
        pixelWidth=inits.get(frames[0]).getPixelWidth();
        if (pixelWidth <= 0)         throw new IOException("String_Node_Str");
        pixelHeight=inits.get(frames[0]).getPixelHeight();
        if (pixelHeight <= 0)         throw new IOException("String_Node_Str");
        tileWidth=inits.get(frames[0]).getTileWidth();
        if (tileWidth <= 0)         throw new IOException("String_Node_Str");
        tileHeight=inits.get(frames[0]).getTileHeight();
        if (tileHeight <= 0)         throw new IOException("String_Node_Str");
      }
 else {
        fileNum=Util.leShort(file.readShort());
        file.skipBytes(2);
        if (fileNum <= 0)         throw new IOException("String_Node_Str");
        sX=Util.leShort(file.readShort());
        if (sX < 0)         throw new IOException("String_Node_Str");
        sY=Util.leShort(file.readShort());
        if (sY < 0)         throw new IOException("String_Node_Str");
        pixelWidth=Util.leShort(file.readShort());
        if (pixelWidth <= 0)         throw new IOException("String_Node_Str");
        pixelHeight=Util.leShort(file.readShort());
        if (pixelHeight <= 0)         throw new IOException("String_Node_Str");
        tileWidth=(float)pixelWidth / Tile.TILE_PIXEL_WIDTH;
        tileHeight=(float)pixelHeight / Tile.TILE_PIXEL_HEIGHT;
      }
      inits.setElementAt(new Graphic(sX,sY,fileNum,pixelWidth,pixelHeight,tileWidth,tileHeight,frames,speed),grh);
      grh=Util.leShort(file.readShort());
      file.skipBytes(2);
    }
  }
 catch (  EOFException ex) {
    return inits;
  }
  return null;
}