[LLVMdev] Iterator issue in BranchFolder::RemoveBlocksWithHash?
Nicolas Capens
nicolas at capens.net
Fri May 23 04:10:18 PDT 2008
Hi all,
I updated from 2.2 to the latest SVN head and I now get a debug assert in
BranchFolder::RemoveBlocksWithHash: "vector iterators incompatible". I'm
using Visual C++ 2005. I think this is the culprit code:
MergePotentials.erase(CurMPIter);
if (CurMPIter==B)
break;
The erase clears the _Mycont field (i.e. the iterator's container), while
the == expects CurMPIter and B to have the same container. I'm no STL guru
but it seems wrong to first erase an element and then try to compare it. I
traced it back to revision 50921 made on May 10'th. I rewrote it like
following, which I'm not entirely sure is the intended behavior but it
'works for me':
CurMPIter = MergePotentials.erase(CurMPIter);
if (CurMPIter==B)
break;
Kind regards,
Nicolas Capens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080523/9af5f6b1/attachment.html>
More information about the llvm-dev
mailing list