File tree Expand file tree Collapse file tree 1 file changed +13
-12
lines changed Expand file tree Collapse file tree 1 file changed +13
-12
lines changed Original file line number Diff line number Diff line change 9
9
#include < compat/endian.h>
10
10
11
11
#include < algorithm>
12
+ #include < cstring>
12
13
#include < ios>
13
14
#include < limits>
14
15
#include < map>
@@ -139,27 +140,27 @@ template<typename Stream> inline uint64_t ser_readdata64(Stream &s)
139
140
}
140
141
inline uint64_t ser_double_to_uint64 (double x)
141
142
{
142
- union { double x; uint64_t y; } tmp;
143
- tmp. x = x ;
144
- return tmp. y ;
143
+ uint64_t tmp;
144
+ std::memcpy (& tmp, &x, sizeof (x)) ;
145
+ return tmp;
145
146
}
146
147
inline uint32_t ser_float_to_uint32 (float x)
147
148
{
148
- union { float x; uint32_t y; } tmp;
149
- tmp. x = x ;
150
- return tmp. y ;
149
+ uint32_t tmp;
150
+ std::memcpy (& tmp, &x, sizeof (x)) ;
151
+ return tmp;
151
152
}
152
153
inline double ser_uint64_to_double (uint64_t y)
153
154
{
154
- union { double x; uint64_t y; } tmp;
155
- tmp. y = y ;
156
- return tmp. x ;
155
+ double tmp;
156
+ std::memcpy (& tmp, &y, sizeof (y)) ;
157
+ return tmp;
157
158
}
158
159
inline float ser_uint32_to_float (uint32_t y)
159
160
{
160
- union { float x; uint32_t y; } tmp;
161
- tmp. y = y ;
162
- return tmp. x ;
161
+ float tmp;
162
+ std::memcpy (& tmp, &y, sizeof (y)) ;
163
+ return tmp;
163
164
}
164
165
165
166
You can’t perform that action at this time.
0 commit comments