checking pointer type cast
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 14 Feb 2011 07:47:17 +0000 (07:47 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 14 Feb 2011 07:47:17 +0000 (07:47 +0000)
HLT/BASE/util/AliHLTFilePublisher.cxx
HLT/BASE/util/AliHLTRootFilePublisherComponent.cxx

index c632e66..9e120a0 100644 (file)
@@ -1,25 +1,26 @@
 // $Id$
 
-/**************************************************************************
- * This file is property of and copyright by the ALICE HLT Project        * 
- * ALICE Experiment at CERN, All rights reserved.                         *
- *                                                                        *
- * Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
- *                  for The ALICE HLT Project.                            *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/** @file   AliHLTFilePublisher.cxx
-    @author Matthias Richter
-    @date   
-    @brief  HLT file publisher component implementation. */
+///**************************************************************************
+///* This file is property of and copyright by the ALICE HLT Project        * 
+///* ALICE Experiment at CERN, All rights reserved.                         *
+///*                                                                        *
+///* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+///*                  for The ALICE HLT Project.                            *
+///*                                                                        *
+///* Permission to use, copy, modify and distribute this software and its   *
+///* documentation strictly for non-commercial purposes is hereby granted   *
+///* without fee, provided that the above copyright notice appears in all   *
+///* copies and that both the copyright notice and this permission notice   *
+///* appear in the supporting documentation. The authors make no claims     *
+///* about the suitability of this software for any purpose. It is          *
+///* provided "as is" without express or implied warranty.                  *
+///**************************************************************************
+
+/// @file   AliHLTFilePublisher.cxx
+/// @author Matthias Richter
+/// @date   
+/// @brief  HLT file publisher component implementation. */
+///
 
 // see header file for class documentation
 // or
@@ -32,8 +33,8 @@ using namespace std;
 #endif
 
 #include "AliHLTFilePublisher.h"
+#include "AliHLTErrorGuard.h"
 #include "AliLog.h"
-//#include <TObjString.h>
 #include <TMath.h>
 #include <TFile.h>
 
@@ -377,7 +378,16 @@ int AliHLTFilePublisher::GetEvent( const AliHLTComponentEventData& /*evtData*/,
       TObjLink *flnk=files.FirstLink();
       int iTotalSize=0;
       while (flnk && iResult>=0) {
+       if (!flnk->GetObject())  {
+         ALIHLTERRORGUARD(5, "internal mismatch in Root list iterator");
+         continue;
+       }
        FileDesc* pFileDesc=dynamic_cast<FileDesc*>(flnk->GetObject());
+       if (!pFileDesc)  {
+         ALIHLTERRORGUARD(5, "internal mismatch, invalid object type for dynamic_cast");
+         continue;
+       }
+
        if (not fOpenFilesAtStart) pFileDesc->OpenFile();
        TFile* pFile=NULL;
        if (pFileDesc && (pFile=*pFileDesc)!=NULL) {
index 11793fa..92bf561 100644 (file)
@@ -1,37 +1,35 @@
 // $Id$
 
-/**************************************************************************
- * This file is property of and copyright by the ALICE HLT Project        * 
- * ALICE Experiment at CERN, All rights reserved.                         *
- *                                                                        *
- * Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
- *                  for The ALICE HLT Project.                            *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/** @file   AliHLTRootFilePublisherComponent.cxx
-    @author Matthias Richter, Jochen Thaeder
-    @date   
-    @brief  HLT file publisher component implementation. */
+///**************************************************************************
+///* This file is property of and copyright by the ALICE HLT Project        * 
+///* ALICE Experiment at CERN, All rights reserved.                         *
+///*                                                                        *
+///* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+///*                  for The ALICE HLT Project.                            *
+///*                                                                        *
+///* Permission to use, copy, modify and distribute this software and its   *
+///* documentation strictly for non-commercial purposes is hereby granted   *
+///* without fee, provided that the above copyright notice appears in all   *
+///* copies and that both the copyright notice and this permission notice   *
+///* appear in the supporting documentation. The authors make no claims     *
+///* about the suitability of this software for any purpose. It is          *
+///* provided "as is" without express or implied warranty.                  *
+///**************************************************************************
+
+/// @file   AliHLTRootFilePublisherComponent.cxx
+/// @author Matthias Richter, Jochen Thaeder
+/// @date   
+/// @brief  HLT file publisher component implementation.
+///
 
 #include "AliHLTRootFilePublisherComponent.h"
-//#include <TObjString.h>
-//#include <TMath.h>
-//#include <TFile.h>
+#include "AliHLTErrorGuard.h"
 
 #include "TList.h"
 #include "TTree.h"
 #include "TKey.h"
 #include "TFile.h"
 
-
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTRootFilePublisherComponent)
 
@@ -156,8 +154,15 @@ Int_t AliHLTRootFilePublisherComponent::GetEvent( const AliHLTComponentEventData
       TObjLink *flnk=files.FirstLink();
 
       while (flnk && iResult>=0) {
-
+       if (!flnk->GetObject())  {
+         ALIHLTERRORGUARD(5, "internal mismatch in Root list iterator");
+         continue;
+       }
        FileDesc* pFileDesc=dynamic_cast<FileDesc*>(flnk->GetObject());
+       if (!pFileDesc)  {
+         ALIHLTERRORGUARD(5, "internal mismatch, invalid object type for dynamic_cast");
+         continue;
+       }
 
        if (not fOpenFilesAtStart) pFileDesc->OpenFile();
        TFile* pFile=NULL;
@@ -165,7 +170,15 @@ Int_t AliHLTRootFilePublisherComponent::GetEvent( const AliHLTComponentEventData
        if (pFileDesc && (pFile=*pFileDesc)!=NULL) {
 
          for ( Int_t i = 0; i < pFile->GetListOfKeys()->GetEntries(); i++  ){
+           if (pFile->GetListOfKeys()==NULL || pFile->GetListOfKeys()->At(i)==NULL) {
+             ALIHLTERRORGUARD(5, "internal mismatch in Root key list");
+             continue;
+           }
            TKey * key= dynamic_cast<TKey*>( pFile->GetListOfKeys()->At(i) );
+           if (!key) {
+             ALIHLTERRORGUARD(5, "internal mismatch, object not of type TKey");
+             continue;
+           }
 
            if ( fObjectName != "" ) {
              if ( !( ((TString) key->GetName()).CompareTo(fObjectName) ) )