From 894e75aaf0e2ce23d1fd3e50df9cf7c2bcb6f801 Mon Sep 17 00:00:00 2001
From: hjk <qthjk@ovi.com>
Date: Wed, 15 Aug 2012 18:09:34 +0200
Subject: [PATCH] debugger: fix QStringList dumper

Did not take into account a non-zero 'begin' after a takeFirst().

Change-Id: Icaa1f87c18b1dec7778c4322fd971c9becedcce1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
---
 share/qtcreator/dumper/qttypes.py             |  3 +-
 .../debugger/simple/simple_test_app.cpp       | 48 +++++++++++++++++++
 2 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/share/qtcreator/dumper/qttypes.py b/share/qtcreator/dumper/qttypes.py
index 34aa82e59b1..363bce08c7c 100644
--- a/share/qtcreator/dumper/qttypes.py
+++ b/share/qtcreator/dumper/qttypes.py
@@ -1397,7 +1397,8 @@ def qdump__QStringList(d, value):
     d.putNumChild(size)
     if d.isExpanded():
         innerType = lookupType(d.ns + "QString")
-        d.putArrayData(innerType, d_ptr["array"], size, 0)
+        innerTypePP = innerType.pointer().pointer()
+        d.putArrayData(innerType, d_ptr["array"].cast(innerTypePP) + begin, size, 0)
 
 
 def qdump__QTemporaryFile(d, value):
diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp
index 0423d29f8fe..8c108aad3aa 100644
--- a/tests/manual/debugger/simple/simple_test_app.cpp
+++ b/tests/manual/debugger/simple/simple_test_app.cpp
@@ -1152,6 +1152,51 @@ namespace qlist {
         dummyStatement(&big);
     }
 
+    void testQListIntTakeFirst()
+    {
+        QList<int> l;
+        l.append(0);
+        l.append(1);
+        l.append(2);
+        l.takeFirst();
+        BREAK_HERE;
+        // Expand l.
+        // Check l <2 items> QList<int>.
+        // Check l.0 1 int.
+        // Continue.
+        dummyStatement(&l);
+    }
+
+    void testQListStringTakeFirst()
+    {
+        QList<QString> l;
+        l.append("0");
+        l.append("1");
+        l.append("2");
+        l.takeFirst();
+        BREAK_HERE;
+        // Expand l.
+        // Check l <2 items> QList<QString>.
+        // Check l.0 "1" QString.
+        // Continue.
+        dummyStatement(&l);
+    }
+
+    void testQStringListTakeFirst()
+    {
+        QStringList l;
+        l.append("0");
+        l.append("1");
+        l.append("2");
+        l.takeFirst();
+        BREAK_HERE;
+        // Expand l.
+        // Check l <2 items> QStringList.
+        // Check l.0 "1" QString.
+        // Continue.
+        dummyStatement(&l);
+    }
+
     void testQListIntStar()
     {
         QList<int *> l;
@@ -1320,6 +1365,9 @@ namespace qlist {
         testQListStdString();
         testQListFoo();
         testQListReverse();
+        testQListIntTakeFirst();
+        testQListStringTakeFirst();
+        testQStringListTakeFirst();
     }
 
 } // namespace qlist
-- 
GitLab