ThreadFactoryTests.h increments iterator after erasing the element to which it
refers
-------------------------------------------------------------------------------------
Key: THRIFT-465
URL: https://issues.apache.org/jira/browse/THRIFT-465
Project: Thrift
Issue Type: Bug
Components: Test Suite
Affects Versions: 0.1
Environment: Mac OS X 10.5.6
Reporter: Rush Manbert
Attachments: ThreadFactoryTestsPatch.txt
In lib/cpp/src/consurrency/test/ThreadFactoryTests.h the reapNThreads()
function has this loop:
for (std::set<shared_ptr<Thread> >::const_iterator thread =
threads.begin(); thread != threads.end(); thread++) {
threads.erase(*thread);
}
but erasing the element from the container invalidates all iteratots that point
to that element, so this may result in undefined behavior.
I believe the equivalent is this:
while (!threads.empty()) {
threads.erase (*(threads.begin()));
}
although it really seems like you could just call threads.clear() as well and
forgo the loop. But maybe there's some subtlety here that I'm missing.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.