From 6b89c2d838ec35ed3bfbc15bda68939c6cd855d2 Mon Sep 17 00:00:00 2001
From: Bernd Machenschalk <bernd.machenschalk@ligo.org>
Date: Tue, 24 Feb 2015 19:32:26 +0100
Subject: [PATCH] MinGW doesn't like to cast 64Bit void* to DWORDs

---
 lib/diagnostics_win.cpp | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/diagnostics_win.cpp b/lib/diagnostics_win.cpp
index de0e494d5d..9e4224d0b6 100644
--- a/lib/diagnostics_win.cpp
+++ b/lib/diagnostics_win.cpp
@@ -60,6 +60,11 @@ typedef NTSTATUS (WINAPI *tNTQSI)(
     PULONG ReturnLength
 );
 
+#ifdef __MINGW64__
+#define PTRASINT UINT64
+#else
+#define PTRASINT DWORD
+#endif
 
 // Look in the registry for the specified value user the BOINC diagnostics
 //   hive.
@@ -215,7 +220,7 @@ int diagnostics_finish_thread_list() {
 
 // Return a pointer to the thread entry.
 //
-PBOINC_THREADLISTENTRY diagnostics_find_thread_entry(DWORD dwThreadId) {
+PBOINC_THREADLISTENTRY diagnostics_find_thread_entry(PTRASINT dwThreadId) {
     PBOINC_THREADLISTENTRY pThread = NULL;
     UINT                   uiIndex = 0;
     size_t                 size = 0;
@@ -311,7 +316,7 @@ int diagnostics_update_thread_list() {
             // Enumerate the threads
             for(uiSystemIndex = 0; uiSystemIndex < pProcesses->ThreadCount; uiSystemIndex++) {
                 pThread = &pProcesses->Threads[uiSystemIndex];
-                pThreadEntry = diagnostics_find_thread_entry((DWORD)pThread->ClientId.UniqueThread);
+                pThreadEntry = diagnostics_find_thread_entry((PTRASINT)pThread->ClientId.UniqueThread);
 
                 if (pThreadEntry) {
                     pThreadEntry->crash_kernel_time = (FLOAT)pThread->KernelTime.QuadPart;
@@ -325,12 +330,12 @@ int diagnostics_update_thread_list() {
                     hThread = OpenThread(
                         THREAD_ALL_ACCESS,
                         FALSE,
-                        (DWORD)(pThread->ClientId.UniqueThread)
+                        (PTRASINT)(pThread->ClientId.UniqueThread)
                     );
 
                     pThreadEntry = new BOINC_THREADLISTENTRY;
                     diagnostics_init_thread_entry(pThreadEntry);
-                    pThreadEntry->thread_id = (DWORD)(pThread->ClientId.UniqueThread);
+                    pThreadEntry->thread_id = (PTRASINT)(pThread->ClientId.UniqueThread);
                     pThreadEntry->thread_handle = hThread;
                     pThreadEntry->crash_kernel_time = (FLOAT)pThread->KernelTime.QuadPart;
                     pThreadEntry->crash_user_time = (FLOAT)pThread->UserTime.QuadPart;
-- 
GitLab