Program: 74029
Project: 74029
Buggy source:
/** 
 * @param rowExprsIs
 * @param rowLenIs
 * @throws DataException
 */
private void initialize(String tempDir,RAInputStream rowExprsIs,RAInputStream rowLenIs,int rowCount,DataSetResultSet dataSetResultSet) throws DataException {
  try {
    IOUtil.readInt(rowExprsIs);
    int exprCount=IOUtil.readInt(rowExprsIs);
    this.exprKeys=new ArrayList();
    this.dataSetExprKeys=new HashMap();
    this.dataSetResultSet=dataSetResultSet;
    this.rowExprsDis=new DataInputStream(rowExprsIs);
    this.rowLenDis=new DataInputStream(rowLenIs);
    this.bindingNameTypeMap=new HashMap();
    for (int i=0; i < exprCount; i++) {
      String key=IOUtil.readString(this.rowExprsDis);
      this.exprKeys.add(key);
      if (version >= VersionManager.VERSION_2_2_1_3) {
        this.bindingNameTypeMap.put(key,new Integer(IOUtil.readInt(this.rowExprsDis)));
      }
    }
    if (version >= VersionManager.VERSION_2_2_1_3) {
      int dataSetColumnExprCount=IOUtil.readInt(this.rowExprsDis);
      for (int i=0; i < dataSetColumnExprCount; i++) {
        String key=IOUtil.readObject(this.rowExprsDis).toString();
        this.dataSetExprKeys.put(key,IOUtil.readObject(this.rowExprsDis));
        this.bindingNameTypeMap.put(key,new Integer(IOUtil.readInt(this.rowExprsDis)));
      }
    }
    this.metaOffset=IOUtil.INT_LENGTH + IOUtil.readInt(this.rowExprsDis) + IOUtil.INT_LENGTH;
  }
 catch (  IOException e) {
    throw new DataException(ResourceConstants.RD_LOAD_ERROR,e,"String_Node_Str");
  }
  this.rowExprsIs=rowExprsIs;
  this.rowLenIs=rowLenIs;
  this.currRowIndex=-1;
  this.lastRowIndex=-1;
  this.currRowLenReadIndex=0;
  this.rowCount=rowCount;
  this.rowIDMap=new BasicCachedArray(tempDir,rowCount);
}

Fixed version (ground truth):
/** 
 * @param rowExprsIs
 * @param rowLenIs
 * @throws DataException
 */
private void initialize(String tempDir,RAInputStream rowExprsIs,RAInputStream rowLenIs,int rowCount,DataSetResultSet dataSetResultSet) throws DataException {
  try {
    IOUtil.readInt(rowExprsIs);
    int exprCount=IOUtil.readInt(rowExprsIs);
    this.exprKeys=new ArrayList();
    this.dataSetExprKeys=new HashMap();
    this.rowExprsDis=new DataInputStream(rowExprsIs);
    this.rowLenDis=new DataInputStream(rowLenIs);
    this.bindingNameTypeMap=new HashMap();
    for (int i=0; i < exprCount; i++) {
      String key=IOUtil.readString(this.rowExprsDis);
      this.exprKeys.add(key);
      if (version >= VersionManager.VERSION_2_2_1_3) {
        this.bindingNameTypeMap.put(key,new Integer(IOUtil.readInt(this.rowExprsDis)));
      }
    }
    if (version >= VersionManager.VERSION_2_2_1_3) {
      int dataSetColumnExprCount=IOUtil.readInt(this.rowExprsDis);
      for (int i=0; i < dataSetColumnExprCount; i++) {
        String key=IOUtil.readObject(this.rowExprsDis).toString();
        this.dataSetExprKeys.put(key,IOUtil.readObject(this.rowExprsDis));
        this.bindingNameTypeMap.put(key,new Integer(IOUtil.readInt(this.rowExprsDis)));
      }
    }
    if (this.dataSetExprKeys.size() > 0)     this.dataSetResultSet=dataSetResultSet;
    this.metaOffset=IOUtil.INT_LENGTH + IOUtil.readInt(this.rowExprsDis) + IOUtil.INT_LENGTH;
  }
 catch (  IOException e) {
    throw new DataException(ResourceConstants.RD_LOAD_ERROR,e,"String_Node_Str");
  }
  this.rowExprsIs=rowExprsIs;
  this.rowLenIs=rowLenIs;
  this.currRowIndex=-1;
  this.lastRowIndex=-1;
  this.currRowLenReadIndex=0;
  this.rowCount=rowCount;
  this.rowIDMap=new BasicCachedArray(tempDir,rowCount);
}