From b5b459cfca904f617bde6295eeb4ca77f78e9f00 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Thu, 7 Aug 2014 10:40:21 +0900 Subject: [PATCH] Reordered unpack selector sequence. --- include/msgpack/unpack.hpp | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/include/msgpack/unpack.hpp b/include/msgpack/unpack.hpp index c68fa210..0c467384 100644 --- a/include/msgpack/unpack.hpp +++ b/include/msgpack/unpack.hpp @@ -333,29 +333,7 @@ public: unpack_int8(*reinterpret_cast(m_current), obj); int ret = push_proc(obj, off); if (ret != 0) return ret; - } else if(0xc0 <= selector && selector <= 0xc3) { // nil, bool - switch(selector) { - case 0xc0: { // nil - unpack_nil(obj); - int ret = push_proc(obj, off); - if (ret != 0) return ret; - } break; - - //case 0xc1: // string - case 0xc2: { // false - unpack_false(obj); - int ret = push_proc(obj, off); - if (ret != 0) return ret; - } break; - - case 0xc3: { // true - unpack_true(obj); - int ret = push_proc(obj, off); - if (ret != 0) return ret; - } break; - } - } - else if (0xc4 <= selector && selector <= 0xdf) { + } else if (0xc4 <= selector && selector <= 0xdf) { const uint32_t trail[] = { 1, // bin 8 0xc4 2, // bin 16 0xc5 @@ -409,6 +387,18 @@ public: int ret = push_aggregate( unpack_map(), CT_MAP_KEY, obj, m_current, off); if (ret != 0) return ret; + } else if(selector == 0xc2) { // false + unpack_false(obj); + int ret = push_proc(obj, off); + if (ret != 0) return ret; + } else if(selector == 0xc3) { // true + unpack_true(obj); + int ret = push_proc(obj, off); + if (ret != 0) return ret; + } else if(selector == 0xc0) { // nil + unpack_nil(obj); + int ret = push_proc(obj, off); + if (ret != 0) return ret; } else { off = m_current - m_start; return -1;