@@ -37,10 +37,9 @@ DataPointCompositeObject createDataPointCompositeObject(const std::string& alias
3737template <>
3838DataPointCompositeObject createDataPointCompositeObject (const std::string& alias, float val, uint32_t seconds, uint16_t msec, uint16_t flags)
3939{
40- float tmp[2 ];
41- tmp[0 ] = val;
42- tmp[1 ] = 0 ;
43- return createDPCOM (alias, reinterpret_cast <const uint64_t *>(&tmp[0 ]), seconds, msec, flags, DeliveryType::DPVAL_FLOAT);
40+ uint64_t tmp = 0 ;
41+ memcpy (&tmp, &val, sizeof (val));
42+ return createDPCOM (alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_FLOAT);
4443}
4544
4645template <>
@@ -54,36 +53,38 @@ template <>
5453DataPointCompositeObject createDataPointCompositeObject (const std::string& alias, uint32_t val, uint32_t seconds, uint16_t msec, uint16_t flags)
5554{
5655 uint64_t tmp{val};
57- return createDPCOM (alias, reinterpret_cast < const uint64_t *>( &tmp) , seconds, msec, flags, DeliveryType::DPVAL_UINT);
56+ return createDPCOM (alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_UINT);
5857}
5958
6059template <>
6160DataPointCompositeObject createDataPointCompositeObject (const std::string& alias, long long val, uint32_t seconds, uint16_t msec, uint16_t flags)
6261{
6362 uint64_t tmp{static_cast <uint64_t >(val)};
64- return createDPCOM (alias, reinterpret_cast < const uint64_t *>( &tmp) , seconds, msec, flags, DeliveryType::DPVAL_UINT);
63+ return createDPCOM (alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_UINT);
6564}
6665
6766template <>
6867DataPointCompositeObject createDataPointCompositeObject (const std::string& alias, char val, uint32_t seconds, uint16_t msec, uint16_t flags)
6968{
70- return createDPCOM (alias, reinterpret_cast <const uint64_t *>(&val), seconds, msec, flags, DeliveryType::DPVAL_CHAR);
69+ uint64_t tmp = 0 ;
70+ memcpy (&tmp, &val, 1 );
71+ return createDPCOM (alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_CHAR);
7172}
7273
7374template <>
7475DataPointCompositeObject createDataPointCompositeObject (const std::string& alias, bool val, uint32_t seconds, uint16_t msec, uint16_t flags)
7576{
7677 uint64_t tmp{val};
77- return createDPCOM (alias, reinterpret_cast < const uint64_t *>( &tmp) , seconds, msec, flags, DeliveryType::DPVAL_BOOL);
78+ return createDPCOM (alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_BOOL);
7879}
7980
8081template <>
8182DataPointCompositeObject createDataPointCompositeObject (const std::string& alias, std::string val, uint32_t seconds, uint16_t msec, uint16_t flags)
8283{
8384 constexpr int N{56 };
84- char str[N ];
85- strncpy (str , val.c_str (), N);
86- return createDPCOM (alias, reinterpret_cast < const uint64_t *>(&str[ 0 ]) , seconds, msec, flags, DeliveryType::DPVAL_STRING);
85+ uint64_t tmp[N / sizeof ( uint64_t ) ];
86+ strncpy (( char *)tmp , val.c_str (), N);
87+ return createDPCOM (alias, tmp , seconds, msec, flags, DeliveryType::DPVAL_STRING);
8788}
8889
8990} // namespace o2::dcs
0 commit comments