From d0848ee29aaef4761dc696ba0f53c119e92a2f09 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 5 Oct 2010 16:05:47 +0200
Subject: [PATCH] debugger: fix breakpoint cleanup to allow subsequent runs

Reviewed-by: Friedemann Kleint
---
 src/plugins/debugger/breakhandler.cpp |  3 ++-
 src/plugins/debugger/breakpoint.cpp   | 20 ++++++++++++++++++++
 src/plugins/debugger/breakpoint.h     |  1 +
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index 32df0b3eb54..681f5935fc5 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -742,7 +742,8 @@ void BreakHandler::storeToTemplate(BreakHandler *other)
 {
     QTC_ASSERT(m_bp,/**/);
     foreach (BreakpointData *data, *m_bp) {
-            data->m_handler = other;
+        data->m_handler = other;
+        data->clear();
     }
     m_bp = 0;
 
diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp
index 0c9fc2341bd..46466fa7987 100644
--- a/src/plugins/debugger/breakpoint.cpp
+++ b/src/plugins/debugger/breakpoint.cpp
@@ -205,6 +205,26 @@ BreakpointData::~BreakpointData()
     removeMarker();
 }
 
+void BreakpointData::clear()
+{
+    removeMarker();
+    bpNumber.clear();
+    bpCondition.clear();
+    bpIgnoreCount = 0;
+    bpFileName.clear();
+    bpFullName.clear();
+    bpLineNumber = 0;
+    bpCorrectedLineNumber = 0;
+    bpThreadSpec.clear();
+    bpFuncName.clear();
+    bpAddress = 0;
+    bpMultiple = false;
+    bpEnabled = true;
+    bpState.clear();
+    m_markerFileName.clear();
+    m_markerLineNumber = 0;
+}
+
 void BreakpointData::removeMarker()
 {
     BreakpointMarker *m = marker;
diff --git a/src/plugins/debugger/breakpoint.h b/src/plugins/debugger/breakpoint.h
index e96a58bc83f..9589fb8dc96 100644
--- a/src/plugins/debugger/breakpoint.h
+++ b/src/plugins/debugger/breakpoint.h
@@ -57,6 +57,7 @@ public:
     QString toToolTip() const;
     BreakHandler *handler() { return m_handler; }
     void reinsertBreakpoint();
+    void clear(); // Delete all generated data.
 
     bool isLocatedAt(const QString &fileName, int lineNumber,
         bool useMarkerPosition) const;
-- 
GitLab