consolidate zero-length arrays (aka struct hack)
authortbreitne <timo.gunther.breitner@cern.ch>
Wed, 28 May 2014 07:25:53 +0000 (09:25 +0200)
committertbreitne <timo.gunther.breitner@cern.ch>
Fri, 30 May 2014 13:09:51 +0000 (15:09 +0200)
HLT uses a lot of structs with zero-length arrays, using #ifdef for
platforms not supporting those (setting array_t array[1] instead of
array[0]). These ifdef were inconsistent. Sometimes also array[] instead
of array[0] was used. Moreover, for some structs clang was excluded
(defined(__clang__)), which lead to inconsistencies when calculating sizes
with sizeof() and ultimately runtime errors (output buffer too small in
TPC cluster transformation component). This patch tries to make all
zero-length array structs consistent and removes exceptions for clang.

Whether or not the __SUNPRO et al. defines are still needed is unclear,
maybe they can be removed in the future.

HLT/BASE/AliHLTExternalTrackParam.h
HLT/BASE/AliHLTTrackMCLabel.h
HLT/ITS/AliHLTITSClusterDataFormat.h
HLT/TPCLib/AliHLTTPCClusterDataFormat.h
HLT/TPCLib/AliHLTTPCClusterMCData.h
HLT/TPCLib/AliHLTTPCDigitData.h
HLT/TPCLib/AliHLTTPCTrackletDataFormat.h
HLT/TRD/AliHLTTRDCluster.h
HLT/TRD/AliHLTTRDTrackletWordArray.h

index 251a2d7..f8b3564 100644 (file)
@@ -52,7 +52,7 @@ struct AliHLTTracksData {
 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTExternalTrackParam fTracklets[1]; // array of tracklets
 #else
-  AliHLTExternalTrackParam fTracklets[]; // array of tracklets
+  AliHLTExternalTrackParam fTracklets[0]; // array of tracklets
 #endif
 };
 
index dc3d65c..5c87907 100644 (file)
@@ -26,7 +26,7 @@ struct AliHLTTrackMCData {
 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTTrackMCLabel fLabels[1];
 #else
-  AliHLTTrackMCLabel fLabels[];
+  AliHLTTrackMCLabel fLabels[0];
 #endif
 };
 
index f6c01b6..43ad9c7 100644 (file)
 struct AliHLTITSClusterData
     {
        AliHLTUInt32_t fSpacePointCnt;
-#ifndef __SUNPRO_CC
-       AliHLTITSSpacePointData fSpacePoints[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
        AliHLTITSSpacePointData fSpacePoints[1];
+#else
+       AliHLTITSSpacePointData fSpacePoints[0];
 #endif
     };
 
index 9ef383e..874221d 100644 (file)
 struct AliHLTTPCClusterData
     {
        AliHLTUInt32_t fSpacePointCnt;
-#if !defined(__SUNPRO_CC) && !defined(__clang__)
-       AliHLTTPCSpacePointData fSpacePoints[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
        AliHLTTPCSpacePointData fSpacePoints[1];
+#else
+       AliHLTTPCSpacePointData fSpacePoints[0];
 #endif
     };
 
index 5b26164..78d7baa 100644 (file)
@@ -46,10 +46,10 @@ typedef struct AliHLTTPCClusterMCLabel AliHLTTPCClusterMCLabel;
 struct AliHLTTPCClusterMCData 
 {
   AliHLTUInt32_t fCount;
-#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC) || defined (__clang__)
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTTPCClusterMCLabel fLabels[1];
 #else
-  AliHLTTPCClusterMCLabel fLabels[];
+  AliHLTTPCClusterMCLabel fLabels[0];
 #endif
 };
 
index 4b60388..4301a8f 100644 (file)
@@ -70,10 +70,10 @@ typedef struct AliHLTTPCRandomDigitData AliHLTTPCRandomDigitData;
  */
 struct AliHLTTPCUnpackedRawData
 {
-#ifndef __SUNPRO_CC
-  AliHLTTPCDigitRowData fDigits[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   AliHLTTPCDigitRowData fDigits[1];
+#else
+  AliHLTTPCDigitRowData fDigits[0];
 #endif
 };
 
index 3b69595..46334f6 100644 (file)
 struct AliHLTTPCTrackletData
     {
        AliHLTUInt32_t fTrackletCnt;
-#ifndef __SUNPRO_CC
-       AliHLTTPCTrackSegmentData fTracklets[];
-#else
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
        AliHLTTPCTrackSegmentData fTracklets[1];
+#else
+       AliHLTTPCTrackSegmentData fTracklets[0];
 #endif
        //AliHLTTPCSpacePointData fSpacePoints[];
     };
index f256ff1..a96052d 100644 (file)
@@ -89,10 +89,10 @@ struct AliHLTTRDClustersArray {
   AliHLTTRDClustersArray(Int_t det):fDetector(det),fCount(0){}
   Short_t  fDetector;
   UShort_t fCount;
-#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC) || defined(__clang__)
+#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   cluster_type fCluster[1];
 #else
-  cluster_type fCluster[];
+  cluster_type fCluster[0];
 #endif
 };
 
index 112f0a6..7c6268e 100644 (file)
@@ -16,7 +16,7 @@ struct AliHLTTRDTrackletWordArray {
 #if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC)
   UInt_t fTracklets[1];
 #else
-  UInt_t fTracklets[];
+  UInt_t fTracklets[0];
 #endif
 };