From 64baa15f8e16aad4706d0e43828be266b2258b31 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Sat, 22 Jul 2017 15:35:02 +0900 Subject: [PATCH] Fixed aligned size. --- include/msgpack/v1/object.hpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/include/msgpack/v1/object.hpp b/include/msgpack/v1/object.hpp index a04059fe..6dc072e0 100644 --- a/include/msgpack/v1/object.hpp +++ b/include/msgpack/v1/object.hpp @@ -140,13 +140,17 @@ inline std::size_t aligned_zone_size(msgpack::object const& obj) { std::size_t s = 0; switch (obj.type) { case msgpack::type::ARRAY: - s += sizeof(msgpack::object) * obj.via.array.size; + s += msgpack::aligned_size( + sizeof(msgpack::object) * obj.via.array.size, + MSGPACK_ZONE_ALIGNOF(msgpack::object)); for (uint32_t i = 0; i < obj.via.array.size; ++i) { s += msgpack::aligned_zone_size(obj.via.array.ptr[i]); } break; case msgpack::type::MAP: - s += sizeof(msgpack::object_kv) * obj.via.map.size; + s += msgpack::aligned_size( + sizeof(msgpack::object_kv) * obj.via.map.size, + MSGPACK_ZONE_ALIGNOF(msgpack::object_kv)); for (uint32_t i = 0; i < obj.via.map.size; ++i) { s += msgpack::aligned_zone_size(obj.via.map.ptr[i].key); s += msgpack::aligned_zone_size(obj.via.map.ptr[i].val); @@ -155,13 +159,13 @@ inline std::size_t aligned_zone_size(msgpack::object const& obj) { case msgpack::type::EXT: s += msgpack::aligned_size( detail::add_ext_type_size(obj.via.ext.size), - MSGPACK_ZONE_ALIGNOF(msgpack::object)); + MSGPACK_ZONE_ALIGNOF(char)); break; case msgpack::type::STR: - s += msgpack::aligned_size(obj.via.str.size, MSGPACK_ZONE_ALIGNOF(msgpack::object)); + s += msgpack::aligned_size(obj.via.str.size, MSGPACK_ZONE_ALIGNOF(char)); break; case msgpack::type::BIN: - s += msgpack::aligned_size(obj.via.bin.size, MSGPACK_ZONE_ALIGNOF(msgpack::object)); + s += msgpack::aligned_size(obj.via.bin.size, MSGPACK_ZONE_ALIGNOF(char)); break; default: break;