From a143444a9e6ccfa2a994bd962e0f4b37ec31f695 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Sun, 29 Jun 2025 12:23:01 +1000 Subject: [PATCH] Support for 64-bit timespec seconds on 32-bit platforms Modern 32-bit platforms (such as embedded Linux builds) support 64-bit timestamps in time_t and timespec. --- Sources/NIOConcurrencyHelpers/lock.swift | 6 +----- Sources/NIOPosix/SelectorGeneric.swift | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Sources/NIOConcurrencyHelpers/lock.swift b/Sources/NIOConcurrencyHelpers/lock.swift index 09b89de2b8..572232a78b 100644 --- a/Sources/NIOConcurrencyHelpers/lock.swift +++ b/Sources/NIOConcurrencyHelpers/lock.swift @@ -253,11 +253,7 @@ public final class ConditionLock { gettimeofday(&curTime, nil) let allNSecs: Int64 = timeoutNS + Int64(curTime.tv_usec) * 1000 - #if canImport(wasi_pthread) - let tvSec = curTime.tv_sec + (allNSecs / nsecPerSec) - #else - let tvSec = curTime.tv_sec + Int((allNSecs / nsecPerSec)) - #endif + let tvSec = curTime.tv_sec + time_t((allNSecs / nsecPerSec)) var timeoutAbs = timespec( tv_sec: tvSec, diff --git a/Sources/NIOPosix/SelectorGeneric.swift b/Sources/NIOPosix/SelectorGeneric.swift index e2f7197fa9..8bf62e9930 100644 --- a/Sources/NIOPosix/SelectorGeneric.swift +++ b/Sources/NIOPosix/SelectorGeneric.swift @@ -46,7 +46,7 @@ extension timespec { let nsecPerSec: Int64 = 1_000_000_000 let ns = amount.nanoseconds let sec = ns / nsecPerSec - self = timespec(tv_sec: Int(sec), tv_nsec: Int(ns - sec * nsecPerSec)) + self = timespec(tv_sec: time_t(sec), tv_nsec: Int(ns - sec * nsecPerSec)) } } #endif