From 08a1117c26b29fe5f4e22a503fd4f9438195d81a Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 1 Dec 2020 13:15:29 +0100 Subject: [PATCH] Debugger: Extend and fix QPolygon dumper and test for Qt6 Task-number: QTCREATORBUG-24098 Change-Id: Ia2e43d15263e18698d9db6b4d23fa553c7b7ae5b Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 10 ++++++---- tests/auto/debugger/tst_dumpers.cpp | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 1da2b3a550e..8dcf92cbda6 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -556,9 +556,10 @@ class DumperBase(): return size, limit def vectorData(self, value): - vector_data_ptr = self.extractPointer(value) - # vector_data_ptr is what is e.g. stored in a QVector's d_ptr. - if self.qtVersion() >= 0x050000: + if self.qtVersion() >= 0x060000: + data, size, alloc = self.qArrayData(value) + elif self.qtVersion() >= 0x050000: + vector_data_ptr = self.extractPointer(value) if self.ptrSize() == 4: (ref, size, alloc, offset) = self.split('IIIp', vector_data_ptr) else: @@ -566,6 +567,7 @@ class DumperBase(): alloc = alloc & 0x7ffffff data = vector_data_ptr + offset else: + vector_data_ptr = self.extractPointer(value) (ref, alloc, size) = self.split('III', vector_data_ptr) data = vector_data_ptr + 16 self.check(0 <= size and size <= alloc and alloc <= 1000 * 1000 * 1000) @@ -708,7 +710,7 @@ class DumperBase(): return self.encodedUtf16ToUtf8(self.encodeString(value, limit)) def stringData(self, value): # -> (data, size, alloc) - return self.qArrayData(value) + return self.qArrayData(value) def extractTemplateArgument(self, typename, position): level = 0 diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index d0f76a352b5..5a08803e264 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -7442,6 +7442,8 @@ void tst_Dumpers::dumper_data() "QApplication app(argc, argv);\n" "QGraphicsScene sc;\n" + "QPolygon p0;\n" + "QPolygonF p1;\n" "QPolygonF pol;\n" "pol.append(QPointF(1, 2));\n" "pol.append(QPointF(2, 2));\n" @@ -7454,6 +7456,8 @@ void tst_Dumpers::dumper_data() + GuiProfile() + + Check("p0", "<0 items>", "@QPolygon") + + Check("p1", "<0 items>", "@QPolygonF") + Check("pol", "<5 items>", "@QPolygonF") + Check("p", "<5 items>", "@QGraphicsPolygonItem");