path: root/tools
diff options
authorChandler Carruth <>2014-05-01 10:41:51 +0000
committerChandler Carruth <>2014-05-01 10:41:51 +0000
commitb6fdca612dedef69d7f5d9a40c36c37f0f7cfb47 (patch)
treeb65e85c2aebbf1b837d5aeed561c09b3af89098f /tools
parente29cd17aeb82c9efb8752a901149cbf22359d1d9 (diff)
[LCG] Fix a bad bug in the new fancy iterator scheme I added to support
removal. We can't just blindly increment (or decrement) the adapted iterator when the value is null because doing so can walk past the end (or beginning) and keep inspecting the value. The fix I've implemented is to restrict this further to a forward iterator and add an end iterator to the members (replacing a member that had become dead when I switched to the adaptor base!) and using that to stop the iteration. I'm not entirely pleased with this solution. I feel like forward iteration is too restrictive. I wasn't even happy about bidirectional iteration. It also makes the iterator objects larger and the iteration loops more complex. However, I also don't really like the other alternative that seems obvious: a sentinel node. I'm still hoping to come up with a more elegant solution here, but this at least fixes the MSan and Valgrind errors on this code. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions