Fix some implicit truncation and implicit sign coersion warnings in the Windows porta...
[folly.git] / folly / portability / Time.cpp
index 11eb1be4128d7d0055120e4ae61e107018589133..61851a67672b0e823d21ca19b2e4fc8b108f490d 100755 (executable)
@@ -25,10 +25,11 @@ template <typename _Rep, typename _Period>
 static void duration_to_ts(
     std::chrono::duration<_Rep, _Period> d,
     struct timespec* ts) {
-  ts->tv_sec = std::chrono::duration_cast<std::chrono::seconds>(d).count();
-  ts->tv_nsec = std::chrono::duration_cast<std::chrono::nanoseconds>(
-                    d % std::chrono::seconds(1))
-                    .count();
+  ts->tv_sec =
+      time_t(std::chrono::duration_cast<std::chrono::seconds>(d).count());
+  ts->tv_nsec = long(std::chrono::duration_cast<std::chrono::nanoseconds>(
+                         d % std::chrono::seconds(1))
+                         .count());
 }
 
 #if !FOLLY_HAVE_CLOCK_GETTIME
@@ -215,8 +216,9 @@ extern "C" int clock_gettime(clockid_t clock_id, struct timespec* tp) {
 
   const auto unanosToTimespec = [](timespec* tp, unsigned_nanos t) -> int {
     static constexpr unsigned_nanos one_sec(std::chrono::seconds(1));
-    tp->tv_sec = std::chrono::duration_cast<std::chrono::seconds>(t).count();
-    tp->tv_nsec = (t % one_sec).count();
+    tp->tv_sec =
+        time_t(std::chrono::duration_cast<std::chrono::seconds>(t).count());
+    tp->tv_nsec = long((t % one_sec).count());
     return 0;
   };