]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
include/encoding: fix encode/decode for signed durations
authorSage Weil <sage@redhat.com>
Mon, 8 Jul 2019 20:21:51 +0000 (15:21 -0500)
committerSage Weil <sage@redhat.com>
Mon, 15 Jul 2019 18:34:33 +0000 (13:34 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/include/encoding.h

index 42f4e69050468812fa49351f84969aeffd92e084..1df65ad14cef1632b20c1d8401fbb42c32dab15e 100644 (file)
@@ -312,8 +312,8 @@ template<typename Rep, typename Period,
 void encode(const std::chrono::duration<Rep, Period>& d,
            ceph::bufferlist &bl) {
   using namespace std::chrono;
-  uint32_t s = duration_cast<seconds>(d).count();
-  uint32_t ns = (duration_cast<nanoseconds>(d) % seconds(1)).count();
+  int32_t s = duration_cast<seconds>(d).count();
+  int32_t ns = (duration_cast<nanoseconds>(d) % seconds(1)).count();
   encode(s, bl);
   encode(ns, bl);
 }
@@ -322,8 +322,8 @@ template<typename Rep, typename Period,
          typename std::enable_if_t<std::is_integral_v<Rep>>* = nullptr>
 void decode(std::chrono::duration<Rep, Period>& d,
            bufferlist::const_iterator& p) {
-  uint32_t s;
-  uint32_t ns;
+  int32_t s;
+  int32_t ns;
   decode(s, p);
   decode(ns, p);
   d = std::chrono::seconds(s) + std::chrono::nanoseconds(ns);