From dddd905bc77301db7a52ce9fe4a7ed9331eef590 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Wed, 11 Feb 2009 14:52:29 +0100
Subject: [PATCH]     Fixes:    debugger: procinterrupt logic

---
 src/plugins/debugger/procinterrupt.cpp | 66 +++++++++++++++-----------
 1 file changed, 38 insertions(+), 28 deletions(-)

diff --git a/src/plugins/debugger/procinterrupt.cpp b/src/plugins/debugger/procinterrupt.cpp
index 824ccac41f1..47a309deac8 100644
--- a/src/plugins/debugger/procinterrupt.cpp
+++ b/src/plugins/debugger/procinterrupt.cpp
@@ -33,7 +33,8 @@
 
 #include "procinterrupt.h"
 
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN)
+
 #include <windows.h>
 #include <Tlhelp32.h>
 
@@ -75,7 +76,37 @@ DWORD findProcessId(DWORD parentId)
     CloseHandle(hProcList);
     return procId;
 }
-#else
+
+bool Debugger::Internal::interruptProcess(int pID)
+{
+    DWORD pid = pID;
+    if (!pid)
+        return false;
+
+    PtrCreateRemoteThread libFunc = resolveCreateRemoteThread();
+    if (libFunc) {
+        DWORD dwThreadId = 0;
+        HANDLE hproc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
+        HANDLE hthread = libFunc(hproc, NULL, 0, (LPTHREAD_START_ROUTINE)DebugBreak, 0, 0, &dwThreadId);
+        CloseHandle(hthread);
+        if (dwThreadId)
+            return true;
+    }
+    
+    return false;
+}
+
+bool Debugger::Internal::interruptChildProcess(Q_PID parentPID)
+{
+    DWORD pid = findProcessId(parentPID->dwProcessId);
+    return interruptProcess(pid);
+}
+
+#endif // defined(Q_OS_WIN)
+
+
+
+#if defined(Q_OS_LINUX) || defined(Q_OS_MAC)
 
 #include <QtCore/QLatin1String>
 #include <QtCore/QString>
@@ -89,12 +120,14 @@ DWORD findProcessId(DWORD parentId)
 
 #include <sys/sysctl.h>
 
-#define OPProcessValueUnknown UINT_MAX
+
+using namespace Debugger::Internal;
 
 /* Mac OS X
 int OPParentIDForProcessID(int pid)
     // Returns the parent process id for the given process id (pid)
 {
+    const uint OPProcessValueUnknown = UINT_MAX;
     struct kinfo_proc info;
     size_t length = sizeof(struct kinfo_proc);
     int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid };
@@ -140,44 +173,21 @@ int findChildProcess(int parentId)
     return -1;
 }
 
-#endif
-
 bool Debugger::Internal::interruptProcess(int pID)
 {
-#ifdef Q_OS_WIN
-    DWORD pid = pID;
-    if (!pid)
-        return false;
-
-    PtrCreateRemoteThread libFunc = resolveCreateRemoteThread();
-    if (libFunc) {
-        DWORD dwThreadId = 0;
-        HANDLE hproc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
-        HANDLE hthread = libFunc(hproc, NULL, 0, (LPTHREAD_START_ROUTINE)DebugBreak, 0, 0, &dwThreadId);
-        CloseHandle(hthread);
-        if (dwThreadId)
-            return true;
-    }
-#else
     int procId = pID;
     if (procId != -1) {
         if (kill(procId, SIGINT) == 0)
             return true;
     }
-
-#endif
-    
     return false;
 }
 
 bool Debugger::Internal::interruptChildProcess(Q_PID parentPID)
 {
-#ifdef WIN32
-    DWORD pid = findProcessId(parentPID->dwProcessId);
-    return interruptProcess(pid);
-#else
     int procId = findChildProcess(parentPID);
     //qDebug() << "INTERRUPTING PROCESS" << procId;
     return interruptProcess(procId);
-#endif
 }
+
+#endif // defined(Q_OS_LINUX) || defined(Q_OS_MAC)
-- 
GitLab