Changeset 296839 for src/Patterns


Ignore:
Timestamp:
Apr 2, 2011, 12:21:41 AM (15 years ago)
Author:
Frederik Heber <heber@…>
Children:
1b1ba8
Parents:
bbd746
git-author:
Frederik Heber <heber@…> (04/01/11 12:34:08)
git-committer:
Frederik Heber <heber@…> (04/02/11 00:21:41)
Message:

BUGFIX: Registry<T>::cleanup() - first erase from list, then delete instance.

  • if we just delete all instances, then free the list. We ran into problems when instances had an unregisterInstance() call in their destructor for this effectively invalidated the current iterator.
  • Library version is now 7:2:0, API version is 1.1.2.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Patterns/Registry_impl.hpp

    rbbd746 r296839  
    7878template <class T>void Registry<T>::cleanup()
    7979{
    80   typename std::map<const std::string,T*>::iterator iter;
    81   for(iter=InstanceMap.begin();iter!=InstanceMap.end();++iter) {
     80  typename std::map<const std::string,T*>::iterator iter = InstanceMap.begin();
     81  for(;!InstanceMap.empty();iter=InstanceMap.begin()) {
    8282    //std::cerr << "Removing instance "+iter->first+" from registry" << std::endl;
    83     delete iter->second;
     83    T* instance = iter->second;
     84    InstanceMap.erase(iter);
     85    delete instance;
    8486  }
    8587  InstanceMap.clear();
Note: See TracChangeset for help on using the changeset viewer.