diff --git a/0001-Fixed-724.patch b/0001-Fixed-724.patch new file mode 100644 index 0000000..16bebe1 --- /dev/null +++ b/0001-Fixed-724.patch @@ -0,0 +1,61 @@ +From 53d2ea9ad3cc20e1beac2e1c014082c25e221182 Mon Sep 17 00:00:00 2001 +From: Takatoshi Kondo +Date: Sun, 26 Aug 2018 10:58:47 +0900 +Subject: [PATCH] Fixed #724. + +Fixed type mismatch in msgpack_timestamp. +Added 64bit singed postfix. +--- + include/msgpack/timestamp.h | 8 ++++++-- + include/msgpack/v1/adaptor/cpp11/chrono.hpp | 4 ++-- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/include/msgpack/timestamp.h b/include/msgpack/timestamp.h +index 4d7df83d..76139312 100644 +--- a/include/msgpack/timestamp.h ++++ b/include/msgpack/timestamp.h +@@ -28,13 +28,17 @@ static inline bool msgpack_object_to_timestamp(const msgpack_object* obj, msgpac + switch (obj->via.ext.size) { + case 4: + ts->tv_nsec = 0; +- _msgpack_load32(uint32_t, obj->via.ext.ptr, &ts->tv_sec); ++ { ++ uint32_t v; ++ _msgpack_load32(uint32_t, obj->via.ext.ptr, &v); ++ ts->tv_sec = v; ++ } + return true; + case 8: { + uint64_t value; + _msgpack_load64(uint64_t, obj->via.ext.ptr, &value); + ts->tv_nsec = (uint32_t)(value >> 34); +- ts->tv_sec = value & 0x00000003ffffffffL; ++ ts->tv_sec = value & 0x00000003ffffffffLL; + return true; + } + case 12: +diff --git a/include/msgpack/v1/adaptor/cpp11/chrono.hpp b/include/msgpack/v1/adaptor/cpp11/chrono.hpp +index 1e08355e..db2035b7 100644 +--- a/include/msgpack/v1/adaptor/cpp11/chrono.hpp ++++ b/include/msgpack/v1/adaptor/cpp11/chrono.hpp +@@ -41,7 +41,7 @@ struct as { + uint64_t value; + _msgpack_load64(uint64_t, o.via.ext.data(), &value); + uint32_t nanosec = static_cast(value >> 34); +- uint64_t sec = value & 0x00000003ffffffffL; ++ uint64_t sec = value & 0x00000003ffffffffLL; + tp += std::chrono::duration_cast( + std::chrono::nanoseconds(nanosec)); + tp += std::chrono::seconds(sec); +@@ -79,7 +79,7 @@ struct convert { + uint64_t value; + _msgpack_load64(uint64_t, o.via.ext.data(), &value); + uint32_t nanosec = static_cast(value >> 34); +- uint64_t sec = value & 0x00000003ffffffffL; ++ uint64_t sec = value & 0x00000003ffffffffLL; + tp += std::chrono::duration_cast( + std::chrono::nanoseconds(nanosec)); + tp += std::chrono::seconds(sec); +-- +2.17.1 + diff --git a/msgpack.spec b/msgpack.spec index 4639434..c91487d 100644 --- a/msgpack.spec +++ b/msgpack.spec @@ -7,6 +7,7 @@ Group: System Environment/Libraries License: Boost URL: http://msgpack.org Source0: https://github.com/msgpack/msgpack-c/releases/download/cpp-%{version}/%{name}-%{version}.tar.gz +Patch: 0001-Fixed-724.patch BuildRequires: cmake BuildRequires: gcc-c++ @@ -31,7 +32,7 @@ Libraries and header files for %{name} %prep -%setup -q +%autosetup -p1 %build @@ -59,8 +60,6 @@ popd %install make install/fast DESTDIR=$RPM_BUILD_ROOT -C obj -rm -fv $RPM_BUILD_ROOT%{_libdir}/libmsgpackc.a - %ldconfig_scriptlets