]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTConfigurationHandler.cxx
Major update required to handle old and new AliHLTEventDDL structures within HLT...
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTConfigurationHandler.cxx
index 7d7a2410193a671c827eb354075035c88e952e89..c690544629624f05f497679fc05c0b825e97d099 100644 (file)
@@ -83,7 +83,10 @@ int AliHLTConfigurationHandler::Destroy()
   if (fgpInstance==this) {
     nofInstances=fgNofInstances--;
   }
-  if (nofInstances==0) delete this;
+  if (fgNofInstances==0) {
+    delete fgpInstance;
+    fgpInstance = NULL;
+  }
   return nofInstances;
 }
 
@@ -93,7 +96,8 @@ int AliHLTConfigurationHandler::RegisterConfiguration(AliHLTConfiguration* pConf
   // see header file for function documentation
   int iResult=0;
   if (pConf) {
-    if (FindConfiguration(pConf->GetName()) == NULL) {
+    AliHLTConfiguration* pExisting=NULL;
+    if ((pExisting=FindConfiguration(pConf->GetName())) == NULL) {
       AliHLTConfiguration* pClone=new AliHLTConfiguration(*pConf);
       fgListConfigurations.Add(pClone);
       HLTDebug("configuration \"%s\" (%p) registered from %p", pClone->GetName(), pClone, pConf);
@@ -108,8 +112,10 @@ int AliHLTConfigurationHandler::RegisterConfiguration(AliHLTConfiguration* pConf
        lnk=lnk->Next();
       }
     } else {
+      if ((*pExisting)!=(*pConf)) {
       iResult=-EEXIST;
-      HLTWarning("configuration \"%s\" already registered", pConf->GetName());
+      HLTWarning("configuration \"%s\" already registered with different properties", pConf->GetName());
+      }
     }
   } else {
     iResult=-EINVAL;