diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index 1a3e7d90daa6..b8e808863c08 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -217,14 +217,16 @@ precise_time_ns(uint64_t *ns) { uint64_t time_nano = time * (info.numer / info.denom); *ns = time_nano; #elif __WIN32__ - int64_t ticks_per_s; - QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_s); - if (ticks_per_s == 0LL) { - ticks_per_s = 1LL; + LARGE_INTEGER ticks_per_s; + BOOL query_result = QueryPerformanceFrequency(&ticks_per_s); + assert(query_result); + if (ticks_per_s.QuadPart == 0LL) { + ticks_per_s.QuadPart = 1LL; } - int64_t ticks; - QueryPerformanceCounter((LARGE_INTEGER *)&ticks); - *ns = (uint64_t)((ticks * ns_per_s) / ticks_per_s); + LARGE_INTEGER ticks; + query_result = QueryPerformanceCounter(&ticks); + assert(query_result); + *ns = (uint64_t)((ticks.QuadPart * ns_per_s) / ticks_per_s.QuadPart); #else timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts);