Handle timekeeperSingleton being nullptr in within()
[folly.git] / folly / futures / Future-inl.h
index 70a2c581ee6d228de585a52ed4064480df7d4c37..c7ddeb0a80e609559cd202575c878ecbbd218f4a 100644 (file)
@@ -1218,9 +1218,13 @@ Future<T> Future<T>::within(Duration dur, E e, Timekeeper* tk) {
   }
 
   std::shared_ptr<Timekeeper> tks;
-  if (!tk) {
+  if (LIKELY(!tk)) {
     tks = folly::detail::getTimekeeperSingleton();
-    tk = DCHECK_NOTNULL(tks.get());
+    tk = tks.get();
+  }
+
+  if (UNLIKELY(!tk)) {
+    return makeFuture<T>(NoTimekeeper());
   }
 
   auto ctx = std::make_shared<Context>(std::move(e));