Program: 65578
Project: 65578
Buggy source:
@SuppressWarnings("String_Node_Str") public boolean process(IResultObject row,int rowIndex) throws DataException {
  if (currentFilters.size() == 0)   return true;
  logger.entering(FilterByRow.class.getName(),"String_Node_Str");
  boolean isAccepted=true;
  Iterator filterIt=currentFilters.iterator();
  IResultIterator cachedIterator=dataSet.getResultSet();
  dataSet.setRowObject(row,false);
  dataSet.setCurrentRowIndex(rowIndex);
  Mode temp=dataSet.getMode();
  dataSet.setMode(this.mode);
  try {
    while (filterIt.hasNext()) {
      IFilterDefinition filter=(IFilterDefinition)filterIt.next();
      IBaseExpression expr=filter.getExpression();
      Object result=null;
      try {
        if (expr instanceof IConditionalExpression)         result=ExprEvaluateUtil.evaluateConditionExpression((IConditionalExpression)expr,dataSet.getScriptScope(),true,dataSet.getSession().getEngineContext().getScriptContext(),compareHints,dataSet);
 else         result=ExprEvaluateUtil.evaluateRawExpression2(expr,dataSet.getScriptScope(),dataSet.getSession().getEngineContext().getScriptContext(),dataSet);
      }
 catch (      BirtException e2) {
        DataException dataEx=DataException.wrap(e2);
        throw dataEx;
      }
      if (result == null) {
        Object info=null;
        if (expr instanceof IScriptExpression)         info=((IScriptExpression)expr).getText();
 else         info=expr;
        throw new DataException(ResourceConstants.INVALID_EXPRESSION_IN_FILTER,info);
      }
      try {
        if (DataTypeUtil.toBoolean(result).booleanValue() == false) {
          isAccepted=false;
          break;
        }
      }
 catch (      BirtException e) {
        DataException e1=new DataException(ResourceConstants.DATATYPEUTIL_ERROR,e);
        logger.logp(Level.FINE,FilterByRow.class.getName(),"String_Node_Str","String_Node_Str",e1);
        throw e1;
      }
    }
    if (cachedIterator != null)     this.dataSet.setResultSet(cachedIterator,false);
    return isAccepted;
  }
  finally {
    dataSet.setMode(temp);
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") public boolean process(IResultObject row,int rowIndex) throws DataException {
  if (currentFilters.size() == 0)   return true;
  logger.entering(FilterByRow.class.getName(),"String_Node_Str");
  boolean isAccepted=true;
  Iterator filterIt=currentFilters.iterator();
  IResultIterator cachedIterator=dataSet.getResultSet();
  dataSet.setRowObject(row,false);
  dataSet.setCurrentRowIndex(rowIndex);
  Mode temp=dataSet.getMode();
  dataSet.setMode(this.mode);
  try {
    while (filterIt.hasNext()) {
      IFilterDefinition filter=(IFilterDefinition)filterIt.next();
      IBaseExpression expr=filter.getExpression();
      Object result=null;
      try {
        if (expr instanceof IConditionalExpression)         result=exprEvaluator.evaluateConditionExpression((IConditionalExpression)expr,dataSet.getScriptScope(),true,dataSet.getSession().getEngineContext().getScriptContext(),compareHints,dataSet);
 else         result=exprEvaluator.evaluateRawExpression2(expr,dataSet.getScriptScope(),dataSet.getSession().getEngineContext().getScriptContext(),dataSet);
      }
 catch (      BirtException e2) {
        DataException dataEx=DataException.wrap(e2);
        throw dataEx;
      }
      if (result == null) {
        Object info=null;
        if (expr instanceof IScriptExpression)         info=((IScriptExpression)expr).getText();
 else         info=expr;
        throw new DataException(ResourceConstants.INVALID_EXPRESSION_IN_FILTER,info);
      }
      try {
        if (DataTypeUtil.toBoolean(result).booleanValue() == false) {
          isAccepted=false;
          break;
        }
      }
 catch (      BirtException e) {
        DataException e1=new DataException(ResourceConstants.DATATYPEUTIL_ERROR,e);
        logger.logp(Level.FINE,FilterByRow.class.getName(),"String_Node_Str","String_Node_Str",e1);
        throw e1;
      }
    }
    if (cachedIterator != null)     this.dataSet.setResultSet(cachedIterator,false);
    return isAccepted;
  }
  finally {
    dataSet.setMode(temp);
  }
}