From 40bb5032197582f25a2ec182e2986a720575fe4b Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 20 Jul 2010 11:15:21 +0200
Subject: [PATCH] debugger: re-adjust 'moved' breakpoints after debugging
 finished

---
 src/plugins/debugger/breakpoint.cpp     | 11 +++++++++--
 src/plugins/debugger/breakpoint.h       |  3 +++
 tests/manual/gdbdebugger/simple/app.cpp |  2 --
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp
index 166bebd398e..981aed0ba43 100644
--- a/src/plugins/debugger/breakpoint.cpp
+++ b/src/plugins/debugger/breakpoint.cpp
@@ -176,8 +176,6 @@ BreakpointData *BreakpointData::clone() const
 {
     BreakpointData *data = new BreakpointData();
     data->m_handler = m_handler;
-    data->m_markerFileName = m_markerFileName;
-    data->m_markerLineNumber = m_markerLineNumber;
     data->enabled = enabled;
     data->type = type;
     data->fileName = fileName;
@@ -188,6 +186,15 @@ BreakpointData *BreakpointData::clone() const
     data->threadSpec = threadSpec;
     data->funcName = funcName;
     data->useFullPath = useFullPath;
+    if (isSetByFunction()) {
+        // FIXME: Would removing it be better then leaving this 
+        // "history" around?
+        data->m_markerFileName = m_markerFileName;
+        data->m_markerLineNumber = m_markerLineNumber;
+    } else {
+        data->m_markerFileName = fileName;
+        data->m_markerLineNumber = lineNumber.toInt();
+    }
     return data;
 }
 
diff --git a/src/plugins/debugger/breakpoint.h b/src/plugins/debugger/breakpoint.h
index 98c569cdf65..7177c17142f 100644
--- a/src/plugins/debugger/breakpoint.h
+++ b/src/plugins/debugger/breakpoint.h
@@ -112,6 +112,9 @@ public:
     void setMarkerLineNumber(int lineNumber);
     int markerLineNumber() const { return m_markerLineNumber; }
 
+    bool isSetByFunction() const { return !funcName.isEmpty(); }
+    bool isSetByFileAndLine() const { return !fileName.isEmpty(); }
+
 private:
     // Taken from either user input or gdb responses.
     QString m_markerFileName; // Used to locate the marker.
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index b90b6b54e3f..939f34a4887 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -1869,7 +1869,6 @@ int main(int argc, char *argv[])
     //testWCout0();
     //testWCout();
     testColor();
-    return 0;
     testQRegion();
     testStuff();
     testPeekAndPoke3();
@@ -1950,7 +1949,6 @@ int main(int argc, char *argv[])
 
     testQObject(argc, argv);
 
-
     //QColor color(255,128,10);
     //QFont font;
 
-- 
GitLab