Program: 76556
Project: 76556
Buggy source:
/** 
 * Parse a line that gives plotting information. Return true if the line is recognized.  Lines with syntax errors are ignored.
 * @param line A command line.
 * @return True if the line is recognized.
 */
protected boolean _parseLine(String line){
  boolean connected=false;
  if (_connected)   connected=true;
  if (super._parseLine(line)) {
    _pxgraphBlankLineMode=false;
    return true;
  }
 else {
    String lcLine=new String(line.toLowerCase());
    if (lcLine.startsWith("String_Node_Str")) {
      String style=(line.substring(6)).trim();
      setMarksStyle(style);
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",16) >= 0) {
        _reusedatasets=false;
      }
 else {
        _reusedatasets=true;
      }
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str") || (_pxgraphBlankLineMode && lcLine.length() == 0)) {
      if (_reusedatasets && lcLine.length() > 0) {
        String tlegend=(line.substring(8)).trim();
        _currentdataset=-1;
        int i;
        for (i=0; i <= _maxdataset; i++) {
          if (getLegend(i).compareTo(tlegend) == 0) {
            _currentdataset=i;
          }
        }
        if (_currentdataset != -1) {
          return true;
        }
 else {
          _currentdataset=_maxdataset;
        }
      }
      _firstinset=true;
      _sawfirstdataset=true;
      _currentdataset++;
      if (lcLine.length() > 0) {
        String legend=(line.substring(8)).trim();
        if (legend != null && legend.length() > 0) {
          addLegend(_currentdataset,legend);
        }
        _pxgraphBlankLineMode=false;
      }
      _maxdataset=_currentdataset;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",6) >= 0) {
        setConnected(false);
      }
 else {
        setConnected(true);
      }
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",9) >= 0) {
        setImpulses(false);
      }
 else {
        setImpulses(true);
      }
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",5) >= 0) {
        setBars(false);
      }
 else {
        setBars(true);
        if (!_yRangeGiven) {
          _yBottom=0;
        }
        int comma=line.indexOf("String_Node_Str",5);
        String barwidth;
        String baroffset=null;
        if (comma > 0) {
          barwidth=(line.substring(5,comma)).trim();
          baroffset=(line.substring(comma + 1)).trim();
        }
 else {
          barwidth=(line.substring(5)).trim();
        }
        try {
          Double bwidth=new Double(barwidth);
          double boffset=_baroffset;
          if (baroffset != null) {
            boffset=(new Double(baroffset)).doubleValue();
          }
          setBars(bwidth.doubleValue(),boffset);
        }
 catch (        NumberFormatException e) {
        }
      }
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (line.startsWith("String_Node_Str")) {
      connected=false;
      line=line.substring(5,line.length()).trim();
    }
 else     if (line.startsWith("String_Node_Str")) {
      connected=false;
      line=line.substring(4,line.length()).trim();
    }
 else     if (line.startsWith("String_Node_Str")) {
      line=line.substring(5,line.length()).trim();
    }
 else     if (line.startsWith("String_Node_Str")) {
      line=line.substring(4,line.length()).trim();
    }
    line=line.trim();
    int fieldsplit=line.indexOf("String_Node_Str");
    if (fieldsplit == -1) {
      fieldsplit=line.indexOf("String_Node_Str");
    }
    if (fieldsplit == -1) {
      fieldsplit=line.indexOf("String_Node_Str");
    }
    if (fieldsplit > 0) {
      String x=(line.substring(0,fieldsplit)).trim();
      String y=(line.substring(fieldsplit + 1)).trim();
      int fieldsplit2=y.indexOf("String_Node_Str");
      if (fieldsplit2 == -1) {
        fieldsplit2=y.indexOf("String_Node_Str");
      }
      if (fieldsplit2 == -1) {
        fieldsplit2=y.indexOf("String_Node_Str");
      }
      if (fieldsplit2 > 0) {
        line=(y.substring(fieldsplit2 + 1)).trim();
        y=(y.substring(0,fieldsplit2)).trim();
      }
      try {
        Double xpt=new Double(x);
        Double ypt=new Double(y);
        if (fieldsplit2 > 0) {
          int fieldsplit3=line.indexOf("String_Node_Str");
          if (fieldsplit3 == -1) {
            fieldsplit3=line.indexOf("String_Node_Str");
          }
          if (fieldsplit3 == -1) {
            fieldsplit2=line.indexOf("String_Node_Str");
          }
          if (fieldsplit3 > 0) {
            String yl=(line.substring(0,fieldsplit3)).trim();
            String yh=(line.substring(fieldsplit3 + 1)).trim();
            Double yLowEB=new Double(yl);
            Double yHighEB=new Double(yh);
            connected=_addLegendIfNecessary(connected);
            addPointWithErrorBars(_currentdataset,xpt.doubleValue(),ypt.doubleValue(),yLowEB.doubleValue(),yHighEB.doubleValue(),connected);
            return true;
          }
 else {
            connected=_addLegendIfNecessary(connected);
            addPoint(_currentdataset,xpt.doubleValue(),ypt.doubleValue(),connected);
            return true;
          }
        }
 else {
          connected=_addLegendIfNecessary(connected);
          addPoint(_currentdataset,xpt.doubleValue(),ypt.doubleValue(),connected);
          return true;
        }
      }
 catch (      NumberFormatException e) {
      }
    }
  }
  return false;
}

Fixed version (ground truth):
/** 
 * Parse a line that gives plotting information. Return true if the line is recognized.  Lines with syntax errors are ignored.
 * @param line A command line.
 * @return True if the line is recognized.
 */
protected boolean _parseLine(String line){
  boolean connected=false;
  if (_connected)   connected=true;
  if (super._parseLine(line)) {
    _pxgraphBlankLineMode=false;
    return true;
  }
 else {
    String lcLine=new String(line.toLowerCase());
    if (lcLine.startsWith("String_Node_Str")) {
      String style=(line.substring(6)).trim();
      setMarksStyle(style);
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",16) >= 0) {
        _reusedatasets=false;
      }
 else {
        _reusedatasets=true;
      }
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str") || (_pxgraphBlankLineMode && lcLine.length() == 0)) {
      if (_reusedatasets && lcLine.length() > 0) {
        String tlegend=(line.substring(8)).trim();
        _currentdataset=-1;
        int i;
        for (i=0; i <= _maxdataset; i++) {
          if (getLegend(i).compareTo(tlegend) == 0) {
            _currentdataset=i;
          }
        }
        if (_currentdataset != -1) {
          return true;
        }
 else {
          _currentdataset=_maxdataset;
        }
      }
      _firstinset=true;
      _sawfirstdataset=true;
      _currentdataset++;
      if (lcLine.length() > 0) {
        String legend=(line.substring(8)).trim();
        if (legend != null && legend.length() > 0) {
          addLegend(_currentdataset,legend);
        }
        _pxgraphBlankLineMode=false;
      }
      _maxdataset=_currentdataset;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",6) >= 0) {
        setConnected(false);
      }
 else {
        setConnected(true);
      }
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",9) >= 0) {
        setImpulses(false);
      }
 else {
        setImpulses(true);
      }
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (lcLine.startsWith("String_Node_Str")) {
      if (lcLine.indexOf("String_Node_Str",5) >= 0) {
        setBars(false);
      }
 else {
        setBars(true);
        int comma=line.indexOf("String_Node_Str",5);
        String barwidth;
        String baroffset=null;
        if (comma > 0) {
          barwidth=(line.substring(5,comma)).trim();
          baroffset=(line.substring(comma + 1)).trim();
        }
 else {
          barwidth=(line.substring(5)).trim();
        }
        try {
          Double bwidth=new Double(barwidth);
          double boffset=_baroffset;
          if (baroffset != null) {
            boffset=(new Double(baroffset)).doubleValue();
          }
          setBars(bwidth.doubleValue(),boffset);
        }
 catch (        NumberFormatException e) {
        }
      }
      _pxgraphBlankLineMode=false;
      return true;
    }
 else     if (line.startsWith("String_Node_Str")) {
      connected=false;
      line=line.substring(5,line.length()).trim();
    }
 else     if (line.startsWith("String_Node_Str")) {
      connected=false;
      line=line.substring(4,line.length()).trim();
    }
 else     if (line.startsWith("String_Node_Str")) {
      line=line.substring(5,line.length()).trim();
    }
 else     if (line.startsWith("String_Node_Str")) {
      line=line.substring(4,line.length()).trim();
    }
    line=line.trim();
    int fieldsplit=line.indexOf("String_Node_Str");
    if (fieldsplit == -1) {
      fieldsplit=line.indexOf("String_Node_Str");
    }
    if (fieldsplit == -1) {
      fieldsplit=line.indexOf("String_Node_Str");
    }
    if (fieldsplit > 0) {
      String x=(line.substring(0,fieldsplit)).trim();
      String y=(line.substring(fieldsplit + 1)).trim();
      int fieldsplit2=y.indexOf("String_Node_Str");
      if (fieldsplit2 == -1) {
        fieldsplit2=y.indexOf("String_Node_Str");
      }
      if (fieldsplit2 == -1) {
        fieldsplit2=y.indexOf("String_Node_Str");
      }
      if (fieldsplit2 > 0) {
        line=(y.substring(fieldsplit2 + 1)).trim();
        y=(y.substring(0,fieldsplit2)).trim();
      }
      try {
        Double xpt=new Double(x);
        Double ypt=new Double(y);
        if (fieldsplit2 > 0) {
          int fieldsplit3=line.indexOf("String_Node_Str");
          if (fieldsplit3 == -1) {
            fieldsplit3=line.indexOf("String_Node_Str");
          }
          if (fieldsplit3 == -1) {
            fieldsplit2=line.indexOf("String_Node_Str");
          }
          if (fieldsplit3 > 0) {
            String yl=(line.substring(0,fieldsplit3)).trim();
            String yh=(line.substring(fieldsplit3 + 1)).trim();
            Double yLowEB=new Double(yl);
            Double yHighEB=new Double(yh);
            connected=_addLegendIfNecessary(connected);
            addPointWithErrorBars(_currentdataset,xpt.doubleValue(),ypt.doubleValue(),yLowEB.doubleValue(),yHighEB.doubleValue(),connected);
            return true;
          }
 else {
            connected=_addLegendIfNecessary(connected);
            addPoint(_currentdataset,xpt.doubleValue(),ypt.doubleValue(),connected);
            return true;
          }
        }
 else {
          connected=_addLegendIfNecessary(connected);
          addPoint(_currentdataset,xpt.doubleValue(),ypt.doubleValue(),connected);
          return true;
        }
      }
 catch (      NumberFormatException e) {
      }
    }
  }
  return false;
}