From 717ae824ce21036e3ebc9a8a7f01ba8c90429eb3 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Fri, 10 Jul 2009 09:48:51 +0200
Subject: [PATCH] debugger: fix regression in QVector dumper

Was broken due to a change in the QVector implementation (See 343e848abc1 and
a07385de156 in Qt master)
---
 src/plugins/debugger/watchutils.cpp     | 13 +++++++------
 tests/manual/gdbdebugger/simple/app.cpp |  5 ++++-
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp
index b82d54e75e1..83486e899e9 100644
--- a/src/plugins/debugger/watchutils.cpp
+++ b/src/plugins/debugger/watchutils.cpp
@@ -1338,12 +1338,13 @@ void QtDumperHelper::evaluationParameters(const WatchData &data,
     case QAbstractItemType:
         inner = data.addr.mid(1);
         break;
-    case QVectorType:
-        extraArgs[1] = QLatin1String("(char*)&((");
-        extraArgs[1] += data.exp;
-        extraArgs[1] += QLatin1String(").d->array)-(char*)");
-        extraArgs[1] += data.exp;
-        extraArgs[1] +=  QLatin1String(".d");
+    case QVectorType: 
+        if (m_qtVersion >= 0x040600)
+            extraArgs[1] = QString("(char*)&((%1).p->array)-(char*)((%2).p)")
+                .arg(data.exp).arg(data.exp);
+        else
+            extraArgs[1] = QString("(char*)&((%1).d->array)-(char*)((%2).d)")
+                .arg(data.exp).arg(data.exp);
         break;
     case QObjectSlotType:
     case QObjectSignalType: {
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index c230f2733fb..ff3feca27a2 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -616,6 +616,10 @@ void testStdDeque()
 
 void testStdList()
 {
+    std::list<int> big;
+    for (int i = 0; i < 10000; ++i)
+        big.push_back(i);
+
     std::list<int *> plist1;
     plist1.push_back(new int(1));
     plist1.push_back(0);
@@ -977,7 +981,6 @@ void testQVector()
 
     QVector<Foo> flist;
     flist.append(1);
-
     flist.append(2);
     flist.append(3);
     flist.append(4);
-- 
GitLab