Program: 78273
Project: 78273
Buggy source:
public boolean process(IResultObject row,int rowIndex) throws DataException {
  logger.entering(FilterByRow.class.getName(),"String_Node_Str");
  Context cx=Context.enter();
  try {
    boolean isAccepted=true;
    this.currentFilters=this.getFilterList(currentWorkingFilters);
    Iterator filterIt=currentFilters.iterator();
    dataSet.setRowObject(row,false);
    dataSet.setCurrentRowIndex(rowIndex);
    while (filterIt.hasNext()) {
      IFilterDefinition filter=(IFilterDefinition)filterIt.next();
      IBaseExpression expr=filter.getExpression();
      Object result=ScriptEvalUtil.evalExpr(expr,cx,dataSet.getScriptScope(),"String_Node_Str",0);
      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;
      }
    }
    return isAccepted;
  }
  finally {
    Context.exit();
    logger.exiting(FilterByRow.class.getName(),"String_Node_Str");
  }
}

Fixed version (ground truth):
public boolean process(IResultObject row,int rowIndex) throws DataException {
  logger.entering(FilterByRow.class.getName(),"String_Node_Str");
  Context cx=Context.enter();
  try {
    boolean isAccepted=true;
    this.currentFilters=this.getFilterList(currentWorkingFilters);
    Iterator filterIt=currentFilters.iterator();
    dataSet.setRowObject(row,false);
    dataSet.setCurrentRowIndex(rowIndex);
    while (filterIt.hasNext()) {
      IFilterDefinition filter=(IFilterDefinition)filterIt.next();
      IBaseExpression expr=filter.getExpression();
      Object result=null;
      try {
        if (ModeManager.isNewMode() && helper != null)         result=helper.evaluate(expr);
 else         result=ScriptEvalUtil.evalExpr(expr,cx,dataSet.getScriptScope(),"String_Node_Str",0);
      }
 catch (      BirtException e2) {
        throw new DataException(e2.getLocalizedMessage());
      }
      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;
      }
    }
    return isAccepted;
  }
  finally {
    Context.exit();
    logger.exiting(FilterByRow.class.getName(),"String_Node_Str");
  }
}