diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py index 6ec1e0b5980..512255a00a1 100644 --- a/share/qtcreator/debugger/stdtypes.py +++ b/share/qtcreator/debugger/stdtypes.py @@ -92,9 +92,9 @@ def qdump__std____debug__deque(d, value): def qdump__std__list(d, value): - head = d.dereferenceValue(value) impl = value["_M_impl"] node = impl["_M_node"] + head = d.addressOf(node) size = 0 pp = d.dereference(head) while head != pp and size <= 1001: diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index a232da52ede..302c0671fd5 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -5094,6 +5094,17 @@ void tst_Dumpers::dumper_data() % Check("u32", "68", "uint32_t") % Check("s32", "69", "int32_t"); + QTest::newRow("stdlist2") + << Data("#include \n" + "struct Base { virtual ~Base() {} };\n" + "template\n" + "struct Derived : public std::list, Base {};\n", + "Derived l;\n" + "l.push_back(1);\n" + "l.push_back(2);\n") + % Check("l.@1.0", "[0]", "1", "int") + % Check("l.@1.1", "[1]", "2", "int"); + } int main(int argc, char *argv[])