From 2f9912a012391ecb967bfa951b82190b425cefab Mon Sep 17 00:00:00 2001 From: Simone Pierazzini Date: Thu, 16 Apr 2015 16:02:17 +0200 Subject: [PATCH] Inhibited wrong occurrence of ad-hoc encoding of 64bit doubles on iOS --- include/msgpack/pack.hpp | 5 ++++- include/msgpack/pack_template.h | 4 +++- include/msgpack/unpack.hpp | 4 +++- include/msgpack/unpack_template.h | 4 +++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/msgpack/pack.hpp b/include/msgpack/pack.hpp index 3f4c12db..0520ef15 100644 --- a/include/msgpack/pack.hpp +++ b/include/msgpack/pack.hpp @@ -608,7 +608,10 @@ inline packer& packer::pack_double(double d) mem.f = d; char buf[9]; buf[0] = static_cast(0xcbu); -#if defined(__arm__) && !(__ARM_EABI__) // arm-oabi + +#if defined(TARGET_OS_IPHONE) + // ok +#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi // https://github.com/msgpack/msgpack-perl/pull/1 mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL); #endif diff --git a/include/msgpack/pack_template.h b/include/msgpack/pack_template.h index c417cd34..4041d1ce 100644 --- a/include/msgpack/pack_template.h +++ b/include/msgpack/pack_template.h @@ -669,7 +669,9 @@ msgpack_pack_inline_func(_double)(msgpack_pack_user x, double d) union { double f; uint64_t i; } mem; mem.f = d; buf[0] = 0xcb; -#if defined(__arm__) && !(__ARM_EABI__) // arm-oabi +#if defined(TARGET_OS_IPHONE) + // ok +#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi // https://github.com/msgpack/msgpack-perl/pull/1 mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL); #endif diff --git a/include/msgpack/unpack.hpp b/include/msgpack/unpack.hpp index af55f28d..1b867327 100644 --- a/include/msgpack/unpack.hpp +++ b/include/msgpack/unpack.hpp @@ -721,7 +721,9 @@ inline int context::execute(const char* data, std::size_t len, std::size_t& off) case MSGPACK_CS_DOUBLE: { union { uint64_t i; double f; } mem; load(mem.i, n); -#if defined(__arm__) && !(__ARM_EABI__) // arm-oabi +#if defined(TARGET_OS_IPHONE) + // ok +#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi // https://github.com/msgpack/msgpack-perl/pull/1 mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL); #endif diff --git a/include/msgpack/unpack_template.h b/include/msgpack/unpack_template.h index 9bf389e5..a88fb0a4 100644 --- a/include/msgpack/unpack_template.h +++ b/include/msgpack/unpack_template.h @@ -270,7 +270,9 @@ msgpack_unpack_func(int, _execute)(msgpack_unpack_struct(_context)* ctx, const c case MSGPACK_CS_DOUBLE: { union { uint64_t i; double f; } mem; _msgpack_load64(uint64_t, n, &mem.i); -#if defined(__arm__) && !(__ARM_EABI__) // arm-oabi +#if defined(TARGET_OS_IPHONE) + // ok +#elif defined(__arm__) && !(__ARM_EABI__) // arm-oabi // https://github.com/msgpack/msgpack-perl/pull/1 mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL); #endif