From 309e345818063507ed5bcd8151d670ebd43b6b9c Mon Sep 17 00:00:00 2001 From: Dmitry Nuzhdin Date: Sat, 24 Aug 2019 10:48:17 +0300 Subject: [PATCH] Debugger: Fix mapping std::set in Locals window via gdb Currently QtCreator incorrectly shows content of a std::set. For example set {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} is shown as {0, 1, 2, 1, 2, 1, 2, 1, 2}. Change-Id: Idaff66451827657ef129aa3d27895c43938e6fdc Reviewed-by: Orgad Shaneh Reviewed-by: hjk --- share/qtcreator/debugger/stdtypes.py | 2 +- tests/auto/debugger/tst_dumpers.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py index fb621353761..bdbaea14d5a 100644 --- a/share/qtcreator/debugger/stdtypes.py +++ b/share/qtcreator/debugger/stdtypes.py @@ -442,7 +442,7 @@ def qdump__std__set(d, value): d.putSubItem(i, val) if node["_M_right"].pointer() == 0: parent = node["_M_parent"] - while node == parent["_M_right"]: + while node.pointer() == parent["_M_right"].pointer(): node = parent parent = parent["_M_parent"] if node["_M_right"] != parent: diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index b179882643f..026846e7db6 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4692,10 +4692,7 @@ void tst_Dumpers::dumper_data() "std::set s0;\n" "unused(&s0);\n\n" - "std::set s1;\n" - "s1.insert(11);\n" - "s1.insert(22);\n" - "s1.insert(33);\n" + "std::set s1{11, 22, 33, 44, 55, 66, 77, 88};\n" "unused(&s1);\n\n" "typedef std::set Set;\n" @@ -4716,9 +4713,13 @@ void tst_Dumpers::dumper_data() "s3.insert(3);\n" "s3.insert(3);\n") + + Cxx11Profile() + Check("s0", "<0 items>", "std::set") - + Check("s1", "<3 items>", "std::set") + + Check("s1", "<8 items>", "std::set") + + Check("s1.0", "[0]", "11", "int") + + Check("s1.1", "[1]", "22", "int") + + Check("s1.5", "[5]", "66", "int") + Check("s2", "<3 items>", TypeDef("std::set", "Set")) + Check("it1.value", "11", "int")