Program: 78492
Project: 78492
Buggy source:
/** 
 * execute the row. The execution process is: <li> create a row content <li> push it into the context <li> intialize the content. <li> process bookmark, action, style and visibility <li> call onCreate if necessary <li> call emitter to start the row <li> for each cell, execute the cell <li> call emitter to close the row <li> pop up the row.
 * @param rowId row id.
 * @param body table body.
 * @param row row design
 * @param emitter output emitter
 */
private void executeRow(int rowId,ITableBandContent body,RowDesign row,IContentEmitter emitter){
  IRowContent rowContent=report.createRowContent();
  rowContent.setRowID(rowId);
  assert(rowContent instanceof RowContent);
  context.pushContent(rowContent);
  initializeContent(body,row,rowContent);
  processAction(row,rowContent);
  processBookmark(row,rowContent);
  processStyle(row,rowContent);
  processVisibility(row,rowContent);
  IRowData rowData=null;
  IBaseQueryDefinition query=row.getQuery();
  if (query != null) {
    Collection rowExpressions=(query.getRowExpressions());
    IResultIterator rsIterator=((DteResultSet)rset).getResultIterator();
    rowData=new RowData(rsIterator,rowExpressions);
  }
  if (context.isInFactory()) {
    RowScriptExecutor.handleOnCreate((RowContent)rowContent,rowData,context);
  }
  startTOCEntry(rowContent);
  if (emitter != null) {
    emitter.startRow(rowContent);
  }
  for (int j=0; j < row.getCellCount(); j++) {
    CellDesign cell=row.getCell(j);
    if (cell != null) {
      executeCell(rowContent,cell,emitter,rowData);
    }
  }
  if (emitter != null) {
    emitter.endRow(rowContent);
  }
  finishTOCEntry();
  context.popContent();
}

Fixed version (ground truth):
/** 
 * execute the row. The execution process is: <li> create a row content <li> push it into the context <li> intialize the content. <li> process bookmark, action, style and visibility <li> call onCreate if necessary <li> call emitter to start the row <li> for each cell, execute the cell <li> call emitter to close the row <li> pop up the row.
 * @param rowId row id.
 * @param body table body.
 * @param row row design
 * @param emitter output emitter
 */
private void executeRow(int rowId,ITableBandContent body,RowDesign row,IContentEmitter emitter){
  IRowContent rowContent=report.createRowContent();
  rowContent.setRowID(rowId);
  assert(rowContent instanceof RowContent);
  context.pushContent(rowContent);
  initializeContent(body,row,rowContent);
  processAction(row,rowContent);
  processBookmark(row,rowContent);
  processStyle(row,rowContent);
  processVisibility(row,rowContent);
  IResultIterator rsIterator=((DteResultSet)rset).getResultIterator();
  IRowData rowData=null;
  if (context.isInFactory()) {
    rowData=new RowData(rsIterator,TableItemExecutor.getValueExpressions(row));
    RowScriptExecutor.handleOnCreate((RowContent)rowContent,rowData,context);
  }
  startTOCEntry(rowContent);
  if (emitter != null) {
    emitter.startRow(rowContent);
  }
  for (int j=0; j < row.getCellCount(); j++) {
    CellDesign cell=row.getCell(j);
    if (cell != null) {
      executeCell(rowContent,cell,emitter,rowData);
    }
  }
  if (emitter != null) {
    emitter.endRow(rowContent);
  }
  finishTOCEntry();
  context.popContent();
}