| Submitter | François Dumont |
|---|---|
| Date | Feb. 6, 2012, 8:21 p.m. |
| Message ID | <4F30365E.8020806@gmail.com> |
| Download | mbox | patch |
| Permalink | /patch/139789/ |
| State | New |
| Headers | show |
Comments
Patch
Index: include/debug/safe_iterator.h =================================================================== --- include/debug/safe_iterator.h (revision 183913) +++ include/debug/safe_iterator.h (working copy) @@ -380,8 +380,12 @@ bool _M_before_dereferenceable() const { - _Self __it = *this; - return __it._M_incrementable() && (++__it)._M_dereferenceable(); + if (this->_M_incrementable()) + { + _Iterator __base = base(); + return ++__base != _M_get_sequence()->_M_base().end(); + } + return false; } /// Is the iterator incrementable?
Attached patch applied 2012-02-06 François Dumont <fdumont@gcc.gnu.org> * include/debug/safe_iterator.h (_Safe_iterator::_M_before_dereferenceable): Avoid the expensive creation of a _Safe_iterator instance to do the check. François On 02/05/2012 06:30 PM, Paolo Carlini wrote: > On 02/05/2012 06:29 PM, François Dumont wrote: >> Hi >> >> Here is a small performance patch for the debug mode. Nothing >> urgent, just tell me if I can apply it on trunk at the moment. > It impacts only debug-mode, thus it's pretty safe. If you tested it > check-debug I guess you can commit it to mainline even now. > > Thanks, > Paolo. >