Program: 76744
Project: 76744
Buggy source:
/** 
 * @throws BirtException
 */
private void displayPreResult(IQueryResults qr,boolean printGroupInfo,boolean useSkipTo) throws BirtException {
  assertTrue(qr.getResultMetaData() != null);
  IResultIterator ri=qr.getResultIterator();
  if (useSkipTo) {
    if (this.PRE_use_skipto_num == -1)     ri.moveTo(0);
 else     ri.moveTo(this.PRE_use_skipto_num);
  }
 else {
    ri.next();
  }
  do {
    String abc="String_Node_Str";
    for (int i=0; i < rowExprName.length; i++)     abc+=ri.getValue(rowExprName[i]) + "String_Node_Str";
    for (int i=0; i < totalExprName.length; i++)     abc+=ri.getValue(totalExprName[i]) + "String_Node_Str";
    if (this.updateNewBindingName != null && this.updateNewBindingExpr != null)     abc+=ri.getValue(this.updateNewBindingName) + "String_Node_Str";
    if (printGroupInfo)     abc+=ri.getStartingGroupLevel() + "String_Node_Str";
    this.testPrintln(abc + ri.getRowId());
    if (this.UPDATE_add_subquery == 1) {
      IResultIterator subRi=ri.getSecondaryIterator(subQueryName1,scope);
      while (subRi.next()) {
        abc="String_Node_Str";
        for (int i=0; i < subRowExprName1.length; i++)         abc+=subRi.getValue(subRowExprName1[i]) + "String_Node_Str";
        this.testPrintln(abc);
      }
    }
    if (this.UPDATE_add_subquery == 2) {
      IResultIterator subRi=ri.getSecondaryIterator(subQueryName2,scope);
      while (subRi.next()) {
        abc="String_Node_Str";
        for (int i=0; i < subRowExprName2.length; i++)         abc+=subRi.getValue(subRowExprName2[i]) + "String_Node_Str";
        this.testPrintln(abc);
      }
    }
  }
 while (ri.next());
  if (this.TEST_ISEMPTY)   assertTrue(ri.isEmpty());
 else   assertFalse(ri.isEmpty());
  this.testPrintln("String_Node_Str");
  ri.close();
  myPreDataEngine.shutdown();
}

Fixed version (ground truth):
/** 
 * @throws BirtException
 */
private void displayPreResult(IQueryResults qr,boolean printGroupInfo,boolean useSkipTo) throws BirtException {
  assertTrue(qr.getResultMetaData() != null);
  IResultIterator ri=qr.getResultIterator();
  if (useSkipTo) {
    if (this.PRE_use_skipto_num == -1)     ri.moveTo(0);
 else     ri.moveTo(this.PRE_use_skipto_num);
  }
 else {
    ri.next();
  }
  do {
    String abc="String_Node_Str";
    for (int i=0; i < rowExprName.length; i++)     abc+=ri.getValue(rowExprName[i]) + "String_Node_Str";
    for (int i=0; i < totalExprName.length; i++)     abc+=ri.getValue(totalExprName[i]) + "String_Node_Str";
    if (this.updateNewBindingName != null && this.updateNewBindingExpr != null)     abc+=ri.getValue(this.updateNewBindingName) + "String_Node_Str";
    if (printGroupInfo)     abc+=ri.getStartingGroupLevel() + "String_Node_Str";
    this.testPrintln(abc + ri.getRowId());
    if (this.UPDATE_add_subquery == 1) {
      IResultIterator subRi=ri.getSecondaryIterator(subQueryName1,scope);
      while (subRi.next()) {
        abc="String_Node_Str";
        for (int i=0; i < subRowExprName1.length; i++)         abc+=subRi.getValue(subRowExprName1[i]) + "String_Node_Str";
        if (this.USE_DATE_IN_SUBQUERY)         abc+=subRi.getValue("String_Node_Str");
        this.testPrintln(abc);
      }
    }
    if (this.UPDATE_add_subquery == 2) {
      IResultIterator subRi=ri.getSecondaryIterator(subQueryName2,scope);
      while (subRi.next()) {
        abc="String_Node_Str";
        for (int i=0; i < subRowExprName2.length; i++)         abc+=subRi.getValue(subRowExprName2[i]) + "String_Node_Str";
        this.testPrintln(abc);
      }
    }
  }
 while (ri.next());
  if (this.TEST_ISEMPTY)   assertTrue(ri.isEmpty());
 else   assertFalse(ri.isEmpty());
  this.testPrintln("String_Node_Str");
  ri.close();
  myPreDataEngine.shutdown();
}