<html>
<head>
<base href="http://llvm.org/bugs/" />
</head>
<body><span class="vcard"><a class="email" href="mailto:mclow.lists@gmail.com" title="Marshall Clow (home) <mclow.lists@gmail.com>"> <span class="fn">Marshall Clow (home)</span></a>
</span> changed
<a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - std::list<>::remove_if() visits elements multiple times"
href="http://llvm.org/bugs/show_bug.cgi?id=20520">bug 20520</a>
<br>
<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
<tr>
<td style="text-align:right;">Status</td>
<td>NEW
</td>
<td>RESOLVED
</td>
</tr>
<tr>
<td style="text-align:right;">Resolution</td>
<td>---
</td>
<td>FIXED
</td>
</tr></table>
<p>
<div>
<b><a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - std::list<>::remove_if() visits elements multiple times"
href="http://llvm.org/bugs/show_bug.cgi?id=20520#c4">Comment # 4</a>
on <a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - std::list<>::remove_if() visits elements multiple times"
href="http://llvm.org/bugs/show_bug.cgi?id=20520">bug 20520</a>
from <span class="vcard"><a class="email" href="mailto:mclow.lists@gmail.com" title="Marshall Clow (home) <mclow.lists@gmail.com>"> <span class="fn">Marshall Clow (home)</span></a>
</span></b>
<pre>After the call to erase, we know that either (a) we're at the end of the list,
or (b) we're looking at an element that the predicate has returned "false" for.
So we can just increment the iterator, and move on.
__i = erase(__i, __j);
+ if (__i != __e)
+ __i = _VSTD::next(__i);
I don't see that forward_list has this problem, because the code is somewhat
different.
Committed revision 214736 to fix this (and add tests).</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>