Skip to content

Commit 36afd60

Browse files
committed
Add asserts to check for faililng QueryPerformance* calls in precise_time_ns
Closes #2675.
1 parent 61f76a5 commit 36afd60

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/rt/rust_builtin.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,16 @@ precise_time_ns(uint64_t *ns) {
217217
uint64_t time_nano = time * (info.numer / info.denom);
218218
*ns = time_nano;
219219
#elif __WIN32__
220-
int64_t ticks_per_s;
221-
QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_s);
222-
if (ticks_per_s == 0LL) {
223-
ticks_per_s = 1LL;
220+
LARGE_INTEGER ticks_per_s;
221+
BOOL query_result = QueryPerformanceFrequency(&ticks_per_s);
222+
assert(query_result);
223+
if (ticks_per_s.QuadPart == 0LL) {
224+
ticks_per_s.QuadPart = 1LL;
224225
}
225-
int64_t ticks;
226-
QueryPerformanceCounter((LARGE_INTEGER *)&ticks);
227-
*ns = (uint64_t)((ticks * ns_per_s) / ticks_per_s);
226+
LARGE_INTEGER ticks;
227+
query_result = QueryPerformanceCounter(&ticks);
228+
assert(query_result);
229+
*ns = (uint64_t)((ticks.QuadPart * ns_per_s) / ticks_per_s.QuadPart);
228230
#else
229231
timespec ts;
230232
clock_gettime(CLOCK_MONOTONIC, &ts);

0 commit comments

Comments
 (0)