From 66b7af3215a3a680e090fd5cdf3b161ab668ff8b Mon Sep 17 00:00:00 2001 From: tbreitne Date: Wed, 28 May 2014 09:25:53 +0200 Subject: [PATCH] consolidate zero-length arrays (aka struct hack) 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 | 2 +- HLT/BASE/AliHLTTrackMCLabel.h | 2 +- HLT/ITS/AliHLTITSClusterDataFormat.h | 6 +++--- HLT/TPCLib/AliHLTTPCClusterDataFormat.h | 6 +++--- HLT/TPCLib/AliHLTTPCClusterMCData.h | 4 ++-- HLT/TPCLib/AliHLTTPCDigitData.h | 6 +++--- HLT/TPCLib/AliHLTTPCTrackletDataFormat.h | 6 +++--- HLT/TRD/AliHLTTRDCluster.h | 4 ++-- HLT/TRD/AliHLTTRDTrackletWordArray.h | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/HLT/BASE/AliHLTExternalTrackParam.h b/HLT/BASE/AliHLTExternalTrackParam.h index 251a2d7d7df..f8b35644a4d 100644 --- a/HLT/BASE/AliHLTExternalTrackParam.h +++ b/HLT/BASE/AliHLTExternalTrackParam.h @@ -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 }; diff --git a/HLT/BASE/AliHLTTrackMCLabel.h b/HLT/BASE/AliHLTTrackMCLabel.h index dc3d65c05d4..5c87907596d 100644 --- a/HLT/BASE/AliHLTTrackMCLabel.h +++ b/HLT/BASE/AliHLTTrackMCLabel.h @@ -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 }; diff --git a/HLT/ITS/AliHLTITSClusterDataFormat.h b/HLT/ITS/AliHLTITSClusterDataFormat.h index f6c01b6f575..43ad9c7b2cd 100644 --- a/HLT/ITS/AliHLTITSClusterDataFormat.h +++ b/HLT/ITS/AliHLTITSClusterDataFormat.h @@ -18,10 +18,10 @@ 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 }; diff --git a/HLT/TPCLib/AliHLTTPCClusterDataFormat.h b/HLT/TPCLib/AliHLTTPCClusterDataFormat.h index 9ef383e4ed9..874221d2567 100644 --- a/HLT/TPCLib/AliHLTTPCClusterDataFormat.h +++ b/HLT/TPCLib/AliHLTTPCClusterDataFormat.h @@ -18,10 +18,10 @@ 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 }; diff --git a/HLT/TPCLib/AliHLTTPCClusterMCData.h b/HLT/TPCLib/AliHLTTPCClusterMCData.h index 5b261645c0a..78d7baae44d 100644 --- a/HLT/TPCLib/AliHLTTPCClusterMCData.h +++ b/HLT/TPCLib/AliHLTTPCClusterMCData.h @@ -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 }; diff --git a/HLT/TPCLib/AliHLTTPCDigitData.h b/HLT/TPCLib/AliHLTTPCDigitData.h index 4b603882d0b..4301a8f2c40 100644 --- a/HLT/TPCLib/AliHLTTPCDigitData.h +++ b/HLT/TPCLib/AliHLTTPCDigitData.h @@ -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 }; diff --git a/HLT/TPCLib/AliHLTTPCTrackletDataFormat.h b/HLT/TPCLib/AliHLTTPCTrackletDataFormat.h index 3b695952653..46334f603e6 100644 --- a/HLT/TPCLib/AliHLTTPCTrackletDataFormat.h +++ b/HLT/TPCLib/AliHLTTPCTrackletDataFormat.h @@ -17,10 +17,10 @@ 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[]; }; diff --git a/HLT/TRD/AliHLTTRDCluster.h b/HLT/TRD/AliHLTTRDCluster.h index f256ff12ed8..a96052d6ce6 100644 --- a/HLT/TRD/AliHLTTRDCluster.h +++ b/HLT/TRD/AliHLTTRDCluster.h @@ -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 }; diff --git a/HLT/TRD/AliHLTTRDTrackletWordArray.h b/HLT/TRD/AliHLTTRDTrackletWordArray.h index 112f0a60f57..7c6268ef433 100644 --- a/HLT/TRD/AliHLTTRDTrackletWordArray.h +++ b/HLT/TRD/AliHLTTRDTrackletWordArray.h @@ -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 }; -- 2.43.0