Program: 66589
Project: 66589
Buggy source:
/** 
 * @param dis
 * @param rsMeta
 * @param count
 * @return
 * @throws IOException
 */
public static IResultObject readResultObject(DataInputStream dis,IResultClass rsMeta,int count,Map<String,StringTable> stringTableMap,Map<String,DataSetInMemoryStringIndex> index) throws DataException {
  int i=0;
  try {
    Object[] obs=new Object[rsMeta.getFieldCount()];
    for (i=0; i < count; i++) {
      if (rsMeta.isIndexColumn(i + 1)) {
        obs[i]=IOUtil.readObject(dis,DataEngineSession.getCurrentClassLoader());
        if (index.containsKey(rsMeta.getFieldName(i + 1))) {
          obs[i]=index.get(rsMeta.getFieldName(i + 1)).getKeyValue(obs[i]);
        }
      }
 else       if (rsMeta.getFieldMetaData(i + 1).getDataType() == String.class && rsMeta.isCompressedColumn(i + 1)) {
        StringTable stringTable=null;
        if (stringTableMap != null) {
          stringTable=stringTableMap.get(rsMeta.getFieldName(i + 1));
        }
        if (stringTable != null) {
          obs[i]=stringTable.getStringValue(IOUtil.readInt(dis));
        }
 else {
          obs[i]=IOUtil.readObject(dis,DataEngineSession.getCurrentClassLoader());
        }
      }
 else {
        obs[i]=IOUtil.readObject(dis,DataEngineSession.getCurrentClassLoader());
      }
    }
    return new ResultObject(rsMeta,obs);
  }
 catch (  IOException e) {
    Throwable t=e.getCause();
    if (t instanceof ClassNotFoundException) {
      throw new DataException(ResourceConstants.FAIL_LOAD_CLASS,e,new String[]{t.getMessage(),rsMeta.getFieldNativeTypeName(i + 1),rsMeta.getFieldName(i + 1)});
    }
 else {
      throw new DataException(ResourceConstants.FAIL_LOAD_COLUMN_VALUE,e,new String[]{rsMeta.getFieldNativeTypeName(i + 1),rsMeta.getFieldName(i + 1)});
    }
  }
}

Fixed version (ground truth):
/** 
 * @param dis
 * @param rsMeta
 * @param count
 * @return
 * @throws IOException
 */
public static IResultObject readResultObject(DataInputStream dis,IResultClass rsMeta,int count,Map<String,StringTable> stringTableMap,Map<String,DataSetInMemoryStringIndex> index) throws DataException {
  int i=0;
  try {
    Object[] obs=new Object[rsMeta.getFieldCount()];
    for (i=0; i < count; i++) {
      if (rsMeta.isIndexColumn(i + 1) && (index.containsKey(rsMeta.getFieldName(i + 1)))) {
        obs[i]=IOUtil.readObject(dis,DataEngineSession.getCurrentClassLoader());
        obs[i]=index.get(rsMeta.getFieldName(i + 1)).getKeyValue(obs[i]);
      }
 else       if (rsMeta.getFieldMetaData(i + 1).getDataType() == String.class && rsMeta.isCompressedColumn(i + 1)) {
        StringTable stringTable=null;
        if (stringTableMap != null) {
          stringTable=stringTableMap.get(rsMeta.getFieldName(i + 1));
        }
        if (stringTable != null) {
          obs[i]=stringTable.getStringValue(IOUtil.readInt(dis));
        }
 else {
          obs[i]=IOUtil.readObject(dis,DataEngineSession.getCurrentClassLoader());
        }
      }
 else {
        obs[i]=IOUtil.readObject(dis,DataEngineSession.getCurrentClassLoader());
      }
    }
    return new ResultObject(rsMeta,obs);
  }
 catch (  IOException e) {
    Throwable t=e.getCause();
    if (t instanceof ClassNotFoundException) {
      throw new DataException(ResourceConstants.FAIL_LOAD_CLASS,e,new String[]{t.getMessage(),rsMeta.getFieldNativeTypeName(i + 1),rsMeta.getFieldName(i + 1)});
    }
 else {
      throw new DataException(ResourceConstants.FAIL_LOAD_COLUMN_VALUE,e,new String[]{rsMeta.getFieldNativeTypeName(i + 1),rsMeta.getFieldName(i + 1)});
    }
  }
}