Program: 23284
Project: 23284
Buggy source:
/** 
 * Get a view and have it show the data associated with the specified position. This is called when we have already discovered that the view is not available for reuse in the recycle bin. The only choices left are converting an old view or making a new one.
 * @param position The position to display
 * @return A view displaying the data associated with the specified position
 */
View obtainView(int position){
  View scrapView;
  scrapView=mRecycler.getScrapView(position);
  View child;
  if (scrapView != null) {
    if (ViewDebug.TRACE_RECYCLER) {
      ViewDebug.trace(scrapView,ViewDebug.RecyclerTraceType.RECYCLE_FROM_SCRAP_HEAP,position,-1);
    }
    child=mAdapter.getView(position,scrapView,this);
    if (ViewDebug.TRACE_RECYCLER) {
      ViewDebug.trace(child,ViewDebug.RecyclerTraceType.BIND_VIEW,position,getChildCount());
    }
    if (child != scrapView) {
      mRecycler.addScrapView(scrapView);
      if (mCacheColorHint != 0) {
        child.setDrawingCacheBackgroundColor(mCacheColorHint);
      }
      if (ViewDebug.TRACE_RECYCLER) {
        ViewDebug.trace(scrapView,ViewDebug.RecyclerTraceType.MOVE_TO_SCRAP_HEAP,position,-1);
      }
    }
  }
 else {
    child=mAdapter.getView(position,null,this);
    if (mCacheColorHint != 0) {
      child.setDrawingCacheBackgroundColor(mCacheColorHint);
    }
    if (ViewDebug.TRACE_RECYCLER) {
      ViewDebug.trace(child,ViewDebug.RecyclerTraceType.NEW_VIEW,position,getChildCount());
    }
  }
  return child;
}

Fixed version (ground truth):
/** 
 * Get a view and have it show the data associated with the specified position. This is called when we have already discovered that the view is not available for reuse in the recycle bin. The only choices left are converting an old view or making a new one.
 * @param position The position to display
 * @param isScrap Array of at least 1 boolean, the first entry will become true ifthe returned view was taken from the scrap heap, false if otherwise.
 * @return A view displaying the data associated with the specified position
 */
View obtainView(int position,boolean[] isScrap){
  isScrap[0]=false;
  View scrapView;
  scrapView=mRecycler.getScrapView(position);
  View child;
  if (scrapView != null) {
    if (ViewDebug.TRACE_RECYCLER) {
      ViewDebug.trace(scrapView,ViewDebug.RecyclerTraceType.RECYCLE_FROM_SCRAP_HEAP,position,-1);
    }
    child=mAdapter.getView(position,scrapView,this);
    if (ViewDebug.TRACE_RECYCLER) {
      ViewDebug.trace(child,ViewDebug.RecyclerTraceType.BIND_VIEW,position,getChildCount());
    }
    if (child != scrapView) {
      mRecycler.addScrapView(scrapView);
      if (mCacheColorHint != 0) {
        child.setDrawingCacheBackgroundColor(mCacheColorHint);
      }
      if (ViewDebug.TRACE_RECYCLER) {
        ViewDebug.trace(scrapView,ViewDebug.RecyclerTraceType.MOVE_TO_SCRAP_HEAP,position,-1);
      }
    }
 else {
      isScrap[0]=true;
    }
  }
 else {
    child=mAdapter.getView(position,null,this);
    if (mCacheColorHint != 0) {
      child.setDrawingCacheBackgroundColor(mCacheColorHint);
    }
    if (ViewDebug.TRACE_RECYCLER) {
      ViewDebug.trace(child,ViewDebug.RecyclerTraceType.NEW_VIEW,position,getChildCount());
    }
  }
  return child;
}