From 8cdf333e5b3d71c7be02ed32575e13a805b10dbc Mon Sep 17 00:00:00 2001 From: Manuel Weichselbaumer Date: Thu, 9 Apr 2020 13:01:53 +0200 Subject: [PATCH] Fix unpack for uint values 127 < x < 65536 --- src/private/unpack_p.cpp | 4 ++-- tests/mixed/mixed_test.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/private/unpack_p.cpp b/src/private/unpack_p.cpp index 067309d..d8370d4 100644 --- a/src/private/unpack_p.cpp +++ b/src/private/unpack_p.cpp @@ -130,14 +130,14 @@ quint8 * MsgPackPrivate::unpack_negative_fixint(QVariant &v, quint8 *p) quint8 * MsgPackPrivate::unpack_uint8(QVariant &v, quint8 *p) { - v = static_cast(*(++p)); + v = static_cast(*(++p)); return p + 1; } quint8 * MsgPackPrivate::unpack_uint16(QVariant &v, quint8 *p) { p++; - v = _msgpack_load16(quint16, p); + v = static_cast(_msgpack_load16(quint16, p)); return p + 2; } diff --git a/tests/mixed/mixed_test.cpp b/tests/mixed/mixed_test.cpp index 651bfd5..df966bb 100644 --- a/tests/mixed/mixed_test.cpp +++ b/tests/mixed/mixed_test.cpp @@ -10,6 +10,7 @@ class MixedTest : public QObject Q_OBJECT private Q_SLOTS: + void test_uint(); void test_float(); void test_double(); void test_map(); @@ -17,6 +18,19 @@ private Q_SLOTS: void test_mixed(); }; +void MixedTest::test_uint() +{ + for (int i = 0; i <= 32; ++i) { + const quint32 u = (0x1UL<