Program: 196804
Project: 196804
Buggy source:
void updateCrumbs(){
  FragmentManager fm=mActivity.getFragmentManager();
  int numEntries=fm.getBackStackEntryCount();
  int numPreEntries=getPreEntryCount();
  int numViews=mContainer.getChildCount();
  for (int i=0; i < numEntries + numPreEntries; i++) {
    BackStackEntry bse=i < numPreEntries ? getPreEntry(i) : fm.getBackStackEntryAt(i - numPreEntries);
    if (i < numViews) {
      View v=mContainer.getChildAt(i);
      Object tag=v.getTag();
      if (tag != bse) {
        for (int j=i; j < numViews; j++) {
          mContainer.removeViewAt(i);
        }
        numViews=i;
      }
    }
    if (i >= numViews) {
      final View item=mInflater.inflate(com.android.internal.R.layout.fragment_bread_crumb_item,this,false);
      final TextView text=(TextView)item.findViewById(com.android.internal.R.id.title);
      text.setText(bse.getBreadCrumbTitle());
      text.setTag(bse);
      if (i == 0) {
        item.findViewById(com.android.internal.R.id.left_icon).setVisibility(View.GONE);
      }
      mContainer.addView(item);
      text.setOnClickListener(mOnClickListener);
    }
  }
  int viewI=numEntries + numPreEntries;
  numViews=mContainer.getChildCount();
  while (numViews > viewI) {
    mContainer.removeViewAt(numViews - 1);
    numViews--;
  }
  for (int i=0; i < numViews; i++) {
    final View child=mContainer.getChildAt(i);
    child.findViewById(com.android.internal.R.id.title).setEnabled(i < numViews - 1);
    if (mMaxVisible > 0) {
      child.setVisibility(i < numViews - mMaxVisible ? View.GONE : View.VISIBLE);
      final View leftIcon=child.findViewById(com.android.internal.R.id.left_icon);
      leftIcon.setVisibility(i > numViews - mMaxVisible && i != 0 ? View.VISIBLE : View.GONE);
    }
  }
}

Fixed version (ground truth):
void updateCrumbs(){
  FragmentManager fm=mActivity.getFragmentManager();
  int numEntries=fm.getBackStackEntryCount();
  int numPreEntries=getPreEntryCount();
  int numViews=mContainer.getChildCount();
  for (int i=0; i < numEntries + numPreEntries; i++) {
    BackStackEntry bse=i < numPreEntries ? getPreEntry(i) : fm.getBackStackEntryAt(i - numPreEntries);
    if (i < numViews) {
      View v=mContainer.getChildAt(i);
      Object tag=v.getTag();
      if (tag != bse) {
        for (int j=i; j < numViews; j++) {
          mContainer.removeViewAt(i);
        }
        numViews=i;
      }
    }
    if (i >= numViews) {
      final View item=mInflater.inflate(mLayoutResId,this,false);
      final TextView text=(TextView)item.findViewById(com.android.internal.R.id.title);
      text.setText(bse.getBreadCrumbTitle());
      text.setTag(bse);
      text.setTextColor(mTextColor);
      if (i == 0) {
        item.findViewById(com.android.internal.R.id.left_icon).setVisibility(View.GONE);
      }
      mContainer.addView(item);
      text.setOnClickListener(mOnClickListener);
    }
  }
  int viewI=numEntries + numPreEntries;
  numViews=mContainer.getChildCount();
  while (numViews > viewI) {
    mContainer.removeViewAt(numViews - 1);
    numViews--;
  }
  for (int i=0; i < numViews; i++) {
    final View child=mContainer.getChildAt(i);
    child.findViewById(com.android.internal.R.id.title).setEnabled(i < numViews - 1);
    if (mMaxVisible > 0) {
      child.setVisibility(i < numViews - mMaxVisible ? View.GONE : View.VISIBLE);
      final View leftIcon=child.findViewById(com.android.internal.R.id.left_icon);
      leftIcon.setVisibility(i > numViews - mMaxVisible && i != 0 ? View.VISIBLE : View.GONE);
    }
  }
}