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.

Reply via email to