| Index: chrome/browser/infobars/infobar_tab_helper.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/infobars/infobar_tab_helper.cc	(revision 134398)
 | 
| +++ chrome/browser/infobars/infobar_tab_helper.cc	(working copy)
 | 
| @@ -38,8 +38,10 @@
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| -  for (size_t i = 0; i < infobars_.size(); ++i) {
 | 
| -    if (GetInfoBarDelegateAt(i)->EqualsDelegate(delegate)) {
 | 
| +  for (InfoBars::const_iterator i(infobars_.begin()); i != infobars_.end();
 | 
| +       ++i) {
 | 
| +    if ((*i)->EqualsDelegate(delegate)) {
 | 
| +      DCHECK_NE(*i, delegate);
 | 
|        delegate->InfoBarClosed();
 | 
|        return;
 | 
|      }
 | 
| @@ -75,17 +77,14 @@
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| -  size_t i;
 | 
| -  for (i = 0; i < infobars_.size(); ++i) {
 | 
| -    if (GetInfoBarDelegateAt(i) == old_delegate)
 | 
| -      break;
 | 
| -  }
 | 
| -  DCHECK_LT(i, infobars_.size());
 | 
| +  InfoBars::iterator i(std::find(infobars_.begin(), infobars_.end(),
 | 
| +                                 old_delegate));
 | 
| +  DCHECK(i != infobars_.end());
 | 
|  
 | 
| -  infobars_.insert(infobars_.begin() + i, new_delegate);
 | 
| +  i = infobars_.insert(i, new_delegate) + 1;
 | 
|    // Remove the old delegate before notifying, so that if any observers call
 | 
|    // back to AddInfoBar() or similar, we don't dupe-check against this delegate.
 | 
| -  infobars_.erase(infobars_.begin() + i + 1);
 | 
| +  infobars_.erase(i);
 | 
|  
 | 
|    old_delegate->clear_owner();
 | 
|    InfoBarReplacedDetails replaced_details(old_delegate, new_delegate);
 | 
| @@ -106,18 +105,13 @@
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| -  size_t i;
 | 
| -  for (i = 0; i < infobars_.size(); ++i) {
 | 
| -    if (GetInfoBarDelegateAt(i) == delegate)
 | 
| -      break;
 | 
| -  }
 | 
| -  DCHECK_LT(i, infobars_.size());
 | 
| -  InfoBarDelegate* infobar = infobars_[i];
 | 
| +  InfoBars::iterator i(std::find(infobars_.begin(), infobars_.end(), delegate));
 | 
| +  DCHECK(i != infobars_.end());
 | 
|  
 | 
| -  infobar->clear_owner();
 | 
| +  delegate->clear_owner();
 | 
|    // Remove the delegate before notifying, so that if any observers call back to
 | 
|    // AddInfoBar() or similar, we don't dupe-check against this delegate.
 | 
| -  infobars_.erase(infobars_.begin() + i);
 | 
| +  infobars_.erase(i);
 | 
|    // Remove ourselves as an observer if we are tracking no more InfoBars.
 | 
|    if (infobars_.empty()) {
 | 
|      registrar_.Remove(
 | 
| @@ -126,7 +120,7 @@
 | 
|              &web_contents()->GetController()));
 | 
|    }
 | 
|  
 | 
| -  InfoBarRemovedDetails removed_details(infobar, animate);
 | 
| +  InfoBarRemovedDetails removed_details(delegate, animate);
 | 
|    content::NotificationService::current()->Notify(
 | 
|        chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
 | 
|        content::Source<InfoBarTabHelper>(this),
 | 
| 
 |