]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fix a risk of overflow on a time counter on Windows 4346/head
authorYann Collet <yann.collet.73@gmail.com>
Sun, 23 Mar 2025 18:42:41 +0000 (11:42 -0700)
committerYann Collet <yann.collet.73@gmail.com>
Sun, 23 Mar 2025 18:42:41 +0000 (11:42 -0700)
closes #4126

programs/timefn.c

index 4f045226b8bf4a2b7cf9e4681cf3a6b0e39b2efd..d7f330974d33363d69a0d7d4343790263f919ad4 100644 (file)
 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;
     }
 }