summaryrefslogtreecommitdiff
path: root/msgpack/pack_template.h
diff options
context:
space:
mode:
Diffstat (limited to 'msgpack/pack_template.h')
-rw-r--r--msgpack/pack_template.h13
1 files changed, 3 insertions, 10 deletions
diff --git a/msgpack/pack_template.h b/msgpack/pack_template.h
index 5d1088f..69982f4 100644
--- a/msgpack/pack_template.h
+++ b/msgpack/pack_template.h
@@ -566,24 +566,17 @@ if(sizeof(unsigned long long) == 2) {
static inline int msgpack_pack_float(msgpack_packer* x, float d)
{
- union { float f; uint32_t i; } mem;
- mem.f = d;
unsigned char buf[5];
- buf[0] = 0xca; _msgpack_store32(&buf[1], mem.i);
+ buf[0] = 0xca;
+ _PyFloat_Pack4(d, &buf[1], 0);
msgpack_pack_append_buffer(x, buf, 5);
}
static inline int msgpack_pack_double(msgpack_packer* x, double d)
{
- union { double f; uint64_t i; } mem;
- mem.f = d;
unsigned char buf[9];
buf[0] = 0xcb;
-#if defined(__arm__) && !(__ARM_EABI__) // arm-oabi
- // https://github.com/msgpack/msgpack-perl/pull/1
- mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
-#endif
- _msgpack_store64(&buf[1], mem.i);
+ _PyFloat_Pack8(d, &buf[1], 0);
msgpack_pack_append_buffer(x, buf, 9);
}