uv_thread_t is a HANDLE (void pointer) on Windows, which means that
on 64-bit windows it cannot be stored with CRYPTO_THREADID_set_numeric
without potential data loss.
PR-URL: https://github.com/iojs/io.js/pull/124
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
static void crypto_threadid_cb(CRYPTO_THREADID* tid) {
- CRYPTO_THREADID_set_numeric(tid, uv_thread_self());
+ static_assert(sizeof(uv_thread_t) <= sizeof(void*),
+ "uv_thread_t does not fit in a pointer");
+ CRYPTO_THREADID_set_pointer(tid, reinterpret_cast<void*>(uv_thread_self()));
}