Program: 31197
Project: 31197
Buggy source:
public void drawStringsAndGraph(Class cls,String name,Object o,boolean isstatic,int sec){
  if (collapse_depth > 0)   return;
  if (isstatic) {
    drawStrings(cls.getName(),name,o.toString(),isstatic);
    return;
  }
  Color oldColor=g.getColor();
  boolean isHovering=false;
  Section cs=sections.get(sec);
  if (currentlyHoveringSection != null && cs == currentlyHoveringSection && currentlyHoveringName == name) {
    isHovering=true;
    g.setColor(Color.RED);
  }
  Font of=g.getFont();
  g.drawString(cls.getName(),x[0] + indent_level * indentpx,y);
  g.drawString(name,x[1],y);
  g.drawString(o.toString(),x[2],y);
  g.setColor(oldColor);
  double value=Double.NaN;
  if (o instanceof Double)   value=(Double)o;
 else   if (o instanceof Float)   value=(Float)o;
 else   if (o instanceof Integer)   value=(Integer)o;
 else   if (o instanceof Long)   value=(Long)o;
  if (!Double.isNaN(value)) {
    SparklineData data=cs.sparklines.get(name);
    Chart2D chart;
    ITrace2D trace;
    if (data == null) {
      data=new SparklineData();
      data.xmin=x[3];
      data.xmax=x[3] + sparklineWidth;
      data.ymin=y - textheight;
      data.ymax=y;
      data.name=name;
      data.isHovering=false;
      chart=new Chart2D();
      data.chart=chart;
      cs.sparklines.put(name,data);
      trace=new Trace2DLtd(sparklineChartSize,name);
      chart.addTrace(trace);
      TracePainterDisc markerPainter=new TracePainterDisc();
      markerPainter.setDiscSize(2);
      trace.addTracePainter(markerPainter);
    }
 else {
      chart=data.chart;
      trace=chart.getTraces().first();
    }
    if (updateGraphs) {
      trace.addPoint((double)utime / 1000000.0d,value);
    }
    DrawSparkline(x[3],y,trace,isHovering);
  }
  y+=textheight;
  g.setFont(of);
  g.setColor(oldColor);
}

Fixed version (ground truth):
public void drawStringsAndGraph(Class cls,String name,Object o,boolean isstatic,int sec){
  if (collapse_depth > 0)   return;
  if (isstatic) {
    drawStrings(cls.getName(),name,o.toString(),isstatic);
    return;
  }
  Color oldColor=g.getColor();
  boolean isHovering=false;
  Section cs=sections.get(sec);
  if (currentlyHoveringSection != null && cs == currentlyHoveringSection && currentlyHoveringName.equals(name)) {
    isHovering=true;
    g.setColor(Color.RED);
  }
  Font of=g.getFont();
  g.drawString(cls.getName(),x[0] + indent_level * indentpx,y);
  g.drawString(name,x[1],y);
  g.drawString(o.toString(),x[2],y);
  g.setColor(oldColor);
  double value=Double.NaN;
  if (o instanceof Double)   value=(Double)o;
 else   if (o instanceof Float)   value=(Float)o;
 else   if (o instanceof Integer)   value=(Integer)o;
 else   if (o instanceof Long)   value=(Long)o;
  if (!Double.isNaN(value)) {
    SparklineData data=cs.sparklines.get(name);
    Chart2D chart;
    ITrace2D trace;
    if (data == null) {
      data=new SparklineData();
      data.name=name;
      data.isHovering=false;
      chart=new Chart2D();
      data.chart=chart;
      cs.sparklines.put(name,data);
      trace=new Trace2DLtd(sparklineChartSize,name);
      chart.addTrace(trace);
      TracePainterDisc markerPainter=new TracePainterDisc();
      markerPainter.setDiscSize(2);
      trace.addTracePainter(markerPainter);
    }
 else {
      chart=data.chart;
      trace=chart.getTraces().first();
    }
    data.xmin=x[3];
    data.xmax=x[3] + sparklineWidth;
    data.ymin=y - textheight;
    data.ymax=y;
    if (updateGraphs) {
      trace.addPoint((double)utime / 1000000.0d,value);
    }
    DrawSparkline(x[3],y,trace,isHovering);
  }
  y+=textheight;
  g.setFont(of);
  g.setColor(oldColor);
}