diff --git a/src/libstore/nar-info-disk-cache.cc b/src/libstore/nar-info-disk-cache.cc index b5c92b637..2760bc82d 100644 --- a/src/libstore/nar-info-disk-cache.cc +++ b/src/libstore/nar-info-disk-cache.cc @@ -181,7 +181,11 @@ private: { auto i = state.caches.find(uri); if (i == state.caches.end()) { - auto queryCache(state.queryCache.use()(uri)(time(0) - settings.ttlMeta)); + /* Important: always use int64_t even on 32 bit systems. Otherwise + the the subtraction would promote time_t to unsigned if time_t is + 32 bit. */ + auto timestamp = static_cast(time(nullptr)) - static_cast(settings.ttlMeta.get()); + auto queryCache(state.queryCache.use()(uri)(timestamp)); if (!queryCache.next()) return std::nullopt; auto cache = Cache{