[Orxonox-commit 4965] r9634 - code/branches/core6/src/libraries/core/class

landauf at orxonox.net landauf at orxonox.net
Sun Aug 11 14:36:31 CEST 2013


Author: landauf
Date: 2013-08-11 14:36:31 +0200 (Sun, 11 Aug 2013)
New Revision: 9634

Modified:
   code/branches/core6/src/libraries/core/class/Identifier.h
   code/branches/core6/src/libraries/core/class/IdentifierManager.cc
Log:
reset static maps and variables after destroying identifiers
iterate over the same map in createClassHierarchy() an in destroyAllIdentifiers()

Modified: code/branches/core6/src/libraries/core/class/Identifier.h
===================================================================
--- code/branches/core6/src/libraries/core/class/Identifier.h	2013-08-11 09:02:59 UTC (rev 9633)
+++ code/branches/core6/src/libraries/core/class/Identifier.h	2013-08-11 12:36:31 UTC (rev 9634)
@@ -293,6 +293,7 @@
             ~ClassIdentifier()
             {
                 SuperFunctionDestruction<0, T>::destroy(this);
+                classIdentifier_s = 0;
             }
 
             void updateConfigValues(bool updateChildren, Listable*) const;

Modified: code/branches/core6/src/libraries/core/class/IdentifierManager.cc
===================================================================
--- code/branches/core6/src/libraries/core/class/IdentifierManager.cc	2013-08-11 09:02:59 UTC (rev 9633)
+++ code/branches/core6/src/libraries/core/class/IdentifierManager.cc	2013-08-11 12:36:31 UTC (rev 9634)
@@ -85,7 +85,7 @@
     {
         orxout(internal_status) << "Create class-hierarchy" << endl;
         IdentifierManager::startCreatingHierarchy();
-        for (std::map<std::string, Identifier*>::const_iterator it = IdentifierManager::getStringIdentifierMap().begin(); it != IdentifierManager::getStringIdentifierMap().end(); ++it)
+        for (std::map<std::string, Identifier*>::const_iterator it = IdentifierManager::getTypeIDIdentifierMap().begin(); it != IdentifierManager::getTypeIDIdentifierMap().end(); ++it)
         {
             // To create the new branch of the class-hierarchy, we create a new object and delete it afterwards.
             if (it->second->hasFactory())
@@ -105,6 +105,11 @@
     {
         for (std::map<std::string, Identifier*>::iterator it = IdentifierManager::getTypeIDIdentifierMap().begin(); it != IdentifierManager::getTypeIDIdentifierMap().end(); ++it)
             delete (it->second);
+
+        IdentifierManager::getTypeIDIdentifierMap().clear();
+        IdentifierManager::getStringIdentifierMapIntern().clear();
+        IdentifierManager::getLowercaseStringIdentifierMapIntern().clear();
+        IdentifierManager::getIDIdentifierMapIntern().clear();
     }
 
     /**




More information about the Orxonox-commit mailing list