bugfix: component base class overrode data type of output blocks (introduced with...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 31 Jan 2008 09:56:11 +0000 (09:56 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 31 Jan 2008 09:56:11 +0000 (09:56 +0000)
HLT/BASE/AliHLTComponent.cxx
HLT/BASE/AliHLTDataTypes.h

index 67ddf3e..b3c7ff4 100644 (file)
@@ -362,7 +362,7 @@ int AliHLTComponent::MakeOutputDataBlockList( const AliHLTComponentBlockDataList
        return -ENOMEM;
     for ( unsigned long i = 0; i < count; i++ ) {
        (*outputBlocks)[i] = blocks[i];
-       if (blocks[i].fDataType==kAliHLTAnyDataType) {
+       if (MatchExactly(blocks[i].fDataType, kAliHLTAnyDataType)) {
          (*outputBlocks)[i].fDataType=GetOutputDataType();
          /* data type was set to the output data type by the PubSub AliRoot
             Wrapper component, if data type of the block was ********:****.
index 1f091f6..282e4ca 100644 (file)
@@ -523,6 +523,17 @@ inline bool operator!=( const AliHLTComponentDataType& dt1, const AliHLTComponen
   return !(dt1==dt2);
 }
 
+inline bool MatchExactly( const AliHLTComponentDataType& dt1, const AliHLTComponentDataType& dt2 )
+{
+  for ( int i = 0; i < kAliHLTComponentDataTypefIDsize; i++ )
+    if ( dt1.fID[i] != dt2.fID[i] )
+      return false;
+  for ( int i = 0; i < kAliHLTComponentDataTypefOriginSize; i++ )
+    if ( dt1.fOrigin[i] != dt2.fOrigin[i] )
+      return false;
+  return true;
+}
+
 inline AliHLTComponentDataType operator|(const AliHLTComponentDataType srcdt, const char origin[kAliHLTComponentDataTypefOriginSize])
 {
   AliHLTComponentDataType dt=srcdt;