summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Loehning <robert.loehning@nokia.com>2010-01-14 13:07:05 +0100
committerRobert Loehning <robert.loehning@nokia.com>2010-01-14 13:07:05 +0100
commit466571919497ad8f4b86097bd7fa270d3106730c (patch)
tree327af709b5661014681670feb358a638de2c843b
parentc47f1e3a7f2a2dff6dfad86f1fb71a72ec661658 (diff)
downloadqt-creator-466571919497ad8f4b86097bd7fa270d3106730c.tar.gz
qtcdebugger: Overwriting other versions when registering.
Reviewed-by: Friedemann Kleint
-rw-r--r--src/tools/qtcdebugger/main.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/tools/qtcdebugger/main.cpp b/src/tools/qtcdebugger/main.cpp
index 8be595a0ce..2d50f5fc28 100644
--- a/src/tools/qtcdebugger/main.cpp
+++ b/src/tools/qtcdebugger/main.cpp
@@ -456,11 +456,12 @@ static bool registerDebuggerKey(const WCHAR *key,
// Save old key, which might be missing
QString oldDebugger;
registryReadStringKey(handle, debuggerRegistryValueNameC, &oldDebugger, errorMessage);
- if (oldDebugger.contains(QLatin1String(applicationFileC), Qt::CaseInsensitive)) {
+ if (!oldDebugger.compare(call, Qt::CaseInsensitive)) {
*errorMessage = QLatin1String("The program is already registered as post mortem debugger.");
break;
}
- if (!registryWriteStringKey(handle, debuggerRegistryDefaultValueNameC, oldDebugger, errorMessage))
+ if (!(oldDebugger.contains(QLatin1String(applicationFileC), Qt::CaseInsensitive)
+ || registryWriteStringKey(handle, debuggerRegistryDefaultValueNameC, oldDebugger, errorMessage)))
break;
if (debug)
qDebug() << "registering self as " << call;
@@ -485,7 +486,9 @@ bool install(QString *errorMessage)
}
// Unregister helper: Restore the original debugger key
-static bool unregisterDebuggerKey(const WCHAR *key, QString *errorMessage)
+static bool unregisterDebuggerKey(const WCHAR *key,
+ const QString &call,
+ QString *errorMessage)
{
HKEY handle = 0;
bool success = false;
@@ -494,8 +497,7 @@ static bool unregisterDebuggerKey(const WCHAR *key, QString *errorMessage)
break;
QString debugger;
registryReadStringKey(handle, debuggerRegistryValueNameC, &debugger, errorMessage);
- if (!(debugger.isEmpty()
- || debugger.contains(QLatin1String(applicationFileC), Qt::CaseInsensitive))) {
+ if (!debugger.isEmpty() && debugger.compare(call, Qt::CaseInsensitive)) {
*errorMessage = QLatin1String("The program is not registered as post mortem debugger.");
break;
}
@@ -522,10 +524,10 @@ static bool unregisterDebuggerKey(const WCHAR *key, QString *errorMessage)
bool uninstall(QString *errorMessage)
{
- if (!unregisterDebuggerKey(debuggerRegistryKeyC, errorMessage))
+ if (!unregisterDebuggerKey(debuggerRegistryKeyC, debuggerCall(), errorMessage))
return false;
#ifdef Q_OS_WIN64
- if (!unregisterDebuggerKey(debuggerWow32RegistryKeyC, errorMessage))
+ if (!unregisterDebuggerKey(debuggerWow32RegistryKeyC, debuggerCall(QLatin1String("-wow")), errorMessage))
return false;
#endif
return true;