Skip to content

Commit 23746ae

Browse files
committed
auto merge of #10403 : poiru/rust/issue-2675, r=alexcrichton
Closes #2675.
2 parents 0966ec0 + 36afd60 commit 23746ae

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/rt/rust_builtin.cpp

+11-9
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ get_time(int64_t *sec, int32_t *nsec) {
203203
}
204204
#endif
205205

206-
const uint64_t ns_per_s = 1000000000LL;
206+
const int64_t ns_per_s = 1000000000LL;
207207

208208
extern "C" CDECL void
209209
precise_time_ns(uint64_t *ns) {
@@ -217,18 +217,20 @@ precise_time_ns(uint64_t *ns) {
217217
uint64_t time_nano = time * (info.numer / info.denom);
218218
*ns = time_nano;
219219
#elif __WIN32__
220-
uint64_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-
uint64_t ticks;
226-
QueryPerformanceCounter((LARGE_INTEGER *)&ticks);
227-
*ns = ((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);
231-
*ns = (ts.tv_sec * ns_per_s + ts.tv_nsec);
233+
*ns = (uint64_t)(ts.tv_sec * ns_per_s + ts.tv_nsec);
232234
#endif
233235
}
234236

0 commit comments

Comments
 (0)