@@ -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