From 33f4d40d1eaa6fadca6960c3b8ec05e522cb6d99 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Sun, 23 Mar 2025 11:42:41 -0700 Subject: [PATCH] fix a risk of overflow on a time counter on Windows closes #4126 --- programs/timefn.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/programs/timefn.c b/programs/timefn.c index 4f045226b..d7f330974 100644 --- a/programs/timefn.c +++ b/programs/timefn.c @@ -28,18 +28,20 @@ UTIL_time_t UTIL_getTime(void) { static LARGE_INTEGER ticksPerSecond; + static double nsFactor = 1.0; static int init = 0; if (!init) { if (!QueryPerformanceFrequency(&ticksPerSecond)) { perror("timefn::QueryPerformanceFrequency"); abort(); } + nsFactor = 1000000000.0 / (double)ticksPerSecond.QuadPart; init = 1; } { UTIL_time_t r; LARGE_INTEGER x; QueryPerformanceCounter(&x); - r.t = (PTime)(x.QuadPart * 1000000000ULL / ticksPerSecond.QuadPart); + r.t = (PTime)((double)x.QuadPart * nsFactor); return r; } }