Skip to content
Snippets Groups Projects
Commit 9df610bb authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

XDR: Use unions instead of casts for float/double<->int conversion

parent bb1c3523
No related branches found
No related tags found
No related merge requests found
......@@ -37,14 +37,22 @@ int64_t XDRInput::get_int64()
float XDRInput::get_float()
{
uint32_t val = get_uint32();
return *(float*)&val;
union {
uint32_t i;
float f;
} v;
v.i = get_uint32();
return v.f;
}
double XDRInput::get_double()
{
uint64_t val = get_uint64();
return *(double*)&val;
union {
uint64_t i;
double d;
} v;
v.i = get_uint64();
return v.d;
}
uint32_t XDRInput::get_opaque_length()
......
......@@ -70,13 +70,23 @@ XDRStream & XDRStream::operator<<(int64_t number)
XDRStream & XDRStream::operator<<(float number)
{
*this << *(uint32_t*)&number;
union {
uint32_t i;
float f;
} v;
v.f = number;
*this << v.i;
return *this;
}
XDRStream & XDRStream::operator<<(double number)
{
*this << *(uint64_t*)&number;
union {
uint64_t i;
double d;
} v;
v.d = number;
*this << v.i;
return *this;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment