From df82d67900ed3e76c392affa038f76246e04744a Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Thu, 11 Feb 2010 11:58:15 +0100
Subject: [PATCH] CDB: Fix compilation

---
 src/plugins/debugger/cdb/cdbassembler.cpp   | 26 ++++++++++-----------
 src/plugins/debugger/cdb/cdbassembler.h     | 11 ++++-----
 src/plugins/debugger/cdb/cdbdebugengine.cpp |  5 ++--
 3 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/src/plugins/debugger/cdb/cdbassembler.cpp b/src/plugins/debugger/cdb/cdbassembler.cpp
index 93ffd0d34c3..6728e4272e9 100644
--- a/src/plugins/debugger/cdb/cdbassembler.cpp
+++ b/src/plugins/debugger/cdb/cdbassembler.cpp
@@ -61,31 +61,29 @@ static inline void formatAddress(QTextStream &str, QString hexAddressS, int fiel
 namespace Debugger {
 namespace Internal {
 
-bool getRegisters(CIDebugControl *ctl,
-                  CIDebugRegisters *ireg,
-                  QList<Register> *registers,
-                  QString *errorMessage, int base)
+Registers getRegisters(CIDebugControl *ctl,
+                       CIDebugRegisters *ireg,
+                       QString *errorMessage, int base)
 {
-    registers->clear();
+
     ULONG count;
     HRESULT hr = ireg->GetNumberRegisters(&count);
     if (FAILED(hr)) {
         *errorMessage= CdbCore::msgComFailed("GetNumberRegisters", hr);
-        return false;
+        return Registers();
     }
     if (!count)
-        return true;
+        return Registers();
+    Registers registers(count);
     // Retrieve names
     char buf[MAX_PATH];
     for (ULONG r = 0; r < count; r++) {
         hr = ireg->GetDescription(r, buf, MAX_PATH - 1, 0, 0);
         if (FAILED(hr)) {
             *errorMessage= CdbCore::msgComFailed("GetDescription", hr);
-            return false;
+            return Registers();
         }
-        Register reg;
-        reg.name = QByteArray(buf);
-        registers->push_back(reg);
+        registers[r].name = QByteArray(buf);
     }
     // get values
     QVector<DEBUG_VALUE> values(count);
@@ -94,13 +92,13 @@ bool getRegisters(CIDebugControl *ctl,
     hr = ireg->GetValues(count, 0, 0, valuesPtr);
     if (FAILED(hr)) {
         *errorMessage= CdbCore::msgComFailed("GetValues", hr);
-        return false;
+        return Registers();
     }
     if (base < 2)
         base = 10;
     for (ULONG r = 0; r < count; r++)
-        (*registers)[r].value = CdbCore::debugValueToString(values.at(r), 0, base, ctl);
-    return true;
+        registers[r].value = CdbCore::debugValueToString(values.at(r), 0, base, ctl);
+    return registers;
 }
 
 // Output parser for disassembler lines.
diff --git a/src/plugins/debugger/cdb/cdbassembler.h b/src/plugins/debugger/cdb/cdbassembler.h
index a6ae15f098b..039bb084396 100644
--- a/src/plugins/debugger/cdb/cdbassembler.h
+++ b/src/plugins/debugger/cdb/cdbassembler.h
@@ -34,6 +34,7 @@
 #include <QtCore/QString>
 
 #include "cdbcom.h"
+#include "registerhandler.h"
 
 QT_BEGIN_NAMESPACE
 class QTextStream;
@@ -47,13 +48,11 @@ namespace Debugger {
 namespace Internal {
 
 // Utilities related to assembler code.
-class Register;
 
-bool getRegisters(CIDebugControl *ctl,
-                  CIDebugRegisters *ireg,
-                  QList<Register> *registers,
-                  QString *errorMessage,
-                  int base = 10 /* 16 for hex, etc */);
+Registers getRegisters(CIDebugControl *ctl,
+                       CIDebugRegisters *ireg,
+                       QString *errorMessage,
+                       int base = 10 /* 16 for hex, etc */);
 
 bool dissassemble(CdbCore::CoreEngine *engine,
                   ULONG64 offset,
diff --git a/src/plugins/debugger/cdb/cdbdebugengine.cpp b/src/plugins/debugger/cdb/cdbdebugengine.cpp
index f844a2379b3..eb0299d9648 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.cpp
+++ b/src/plugins/debugger/cdb/cdbdebugengine.cpp
@@ -1192,9 +1192,10 @@ void CdbDebugEngine::reloadRegisters()
     const int intBase = 10;
     if (debugCDB)
         qDebug() << Q_FUNC_INFO << intBase;
-    QList<Register> registers;
+
     QString errorMessage;
-    if (!getRegisters(m_d->interfaces().debugControl, m_d->interfaces().debugRegisters, &registers, &errorMessage, intBase))
+    const Registers registers = getRegisters(m_d->interfaces().debugControl, m_d->interfaces().debugRegisters, &errorMessage, intBase);
+    if (registers.isEmpty() && !errorMessage.isEmpty())
         warning(msgFunctionFailed("reloadRegisters" , errorMessage));
     manager()->registerHandler()->setRegisters(registers);
 }
-- 
GitLab