Program: 74028
Project: 74028
Buggy source:
/** 
 * @param rowExprsRAIs
 * @param rowLenRAIs
 * @param version
 */
ExprDataReader1(RAInputStream rowExprsRAIs,RAInputStream rowLenRAIs,int version,DataSetResultSet dataSetData) throws DataException {
  this.INT_LENGTH=IOUtil.INT_LENGTH;
  try {
    this.rowCount=IOUtil.readInt(rowExprsRAIs);
    int exprCount=IOUtil.readInt(rowExprsRAIs);
    this.exprKeys=new ArrayList();
    this.dataSetExprKeys=new HashMap();
    this.rowExprsDis=new DataInputStream(rowExprsRAIs);
    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=INT_LENGTH + IOUtil.readInt(this.rowExprsDis) + INT_LENGTH;
    this.dataSetData=dataSetData;
  }
 catch (  IOException e) {
    throw new DataException(ResourceConstants.RD_LOAD_ERROR,e,"String_Node_Str");
  }
  this.rowExprsRAIs=rowExprsRAIs;
  this.rowLenRAIs=rowLenRAIs;
  this.rowLenDis=new DataInputStream(rowLenRAIs);
  this.version=version;
  this.currReadIndex=0;
  this.currRowIndex=-1;
}

Fixed version (ground truth):
/** 
 * @param rowExprsRAIs
 * @param rowLenRAIs
 * @param version
 */
ExprDataReader1(RAInputStream rowExprsRAIs,RAInputStream rowLenRAIs,int version,DataSetResultSet dataSetData) throws DataException {
  this.INT_LENGTH=IOUtil.INT_LENGTH;
  try {
    this.rowCount=IOUtil.readInt(rowExprsRAIs);
    int exprCount=IOUtil.readInt(rowExprsRAIs);
    this.exprKeys=new ArrayList();
    this.dataSetExprKeys=new HashMap();
    this.rowExprsDis=new DataInputStream(rowExprsRAIs);
    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=INT_LENGTH + IOUtil.readInt(this.rowExprsDis) + INT_LENGTH;
    if (this.dataSetExprKeys.size() > 0)     this.dataSetData=dataSetData;
  }
 catch (  IOException e) {
    throw new DataException(ResourceConstants.RD_LOAD_ERROR,e,"String_Node_Str");
  }
  this.rowExprsRAIs=rowExprsRAIs;
  this.rowLenRAIs=rowLenRAIs;
  this.rowLenDis=new DataInputStream(rowLenRAIs);
  this.version=version;
  this.currReadIndex=0;
  this.currRowIndex=-1;
}