Program: 55961
Project: 55961
Buggy source:
/** 
 * Reads the map data from the given stream and sets up the receiver by it.
 * @param data The receiver of the data.
 * @param in The stream to read from.
 * @throws IOException If an error occured during deserialization.
 */
public static void deserialize(IMapDataReceiver data,InputStream in) throws IOException {
  try {
    DataInputStream stream=new DataInputStream(in);
    int version=stream.readShort();
    if (!(version == VERSION || version == VERSION_WITH_RESOURCES_BLOCKED_PARTITIONS)) {
      throw new IOException("String_Node_Str" + version);
    }
    int width=stream.readShort();
    int height=stream.readShort();
    int players=stream.readByte();
    data.setDimension(width,height,players);
    for (int player=0; player < players; player++) {
      int x=stream.readShort();
      int y=stream.readShort();
      data.setPlayerStart((byte)player,x,y);
    }
    ELandscapeType[] types=ELandscapeType.values;
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        byte type=stream.readByte();
        data.setLandscape(x,y,types[type]);
      }
    }
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        byte h=stream.readByte();
        data.setHeight(x,y,h);
      }
    }
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        byte t=stream.readByte();
        byte amount=stream.readByte();
        data.setResources(x,y,EResourceType.values[t],amount);
      }
    }
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        data.setBlockedPartition(x,y,stream.readShort());
      }
    }
    while (stream.available() > 0) {
      int x=stream.readShort();
      int y=stream.readShort();
      int type=stream.readByte();
      String string=stream.readUTF();
      MapObject object=getObject(type,string);
      if (object != null) {
        data.setMapObject(x,y,object);
      }
    }
  }
 catch (  Throwable t) {
    throw new IOException("String_Node_Str",t);
  }
}

Fixed version (ground truth):
/** 
 * Reads the map data from the given stream and sets up the receiver by it.
 * @param data The receiver of the data.
 * @param in The stream to read from.
 * @throws IOException If an error occured during deserialization.
 */
public static void deserialize(IMapDataReceiver data,InputStream in) throws IOException {
  try {
    DataInputStream stream=new DataInputStream(in);
    int version=stream.readShort();
    if (version < VERSION_WITH_RESOURCES_BLOCKED_PARTITIONS) {
      throw new IOException("String_Node_Str" + version);
    }
    int width=stream.readShort();
    int height=stream.readShort();
    int players=stream.readByte();
    data.setDimension(width,height,players);
    for (int player=0; player < players; player++) {
      int x=stream.readShort();
      int y=stream.readShort();
      data.setPlayerStart((byte)player,x,y);
    }
    ELandscapeType[] types=ELandscapeType.values;
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        byte type=stream.readByte();
        data.setLandscape(x,y,types[type]);
      }
    }
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        byte h=stream.readByte();
        data.setHeight(x,y,h);
      }
    }
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        byte t=stream.readByte();
        byte amount=stream.readByte();
        data.setResources(x,y,EResourceType.values[t],amount);
      }
    }
    for (int x=0; x < width; x++) {
      for (int y=0; y < height; y++) {
        data.setBlockedPartition(x,y,stream.readShort());
      }
    }
    while (stream.available() > 0) {
      int x=stream.readShort();
      int y=stream.readShort();
      int type=stream.readByte();
      String string=stream.readUTF();
      MapObject object=getObject(type,string);
      if (object != null) {
        data.setMapObject(x,y,object);
      }
    }
  }
 catch (  Throwable t) {
    throw new IOException("String_Node_Str",t);
  }
}