summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestelement.cpp
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-09-08 16:34:19 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-09-10 22:19:45 +0200
commitb8191f41c65a908d0529d235b0200e6de99c34fb (patch)
tree59d750687ba5896cd4638780bb32193a5f563961 /src/testlib/qtestelement.cpp
parent4e0082a9cacfdfd0c43e6105274bc0d41dd18801 (diff)
testlib: Replace custom QTestCoreList with std::vector
The custom linked list implementation was implemented using recursion, and as a result didn't handle long lists of test cases, exhausting the stack on e.g. Windows where the default stack is only 1MB. This was the case with e.g. the tst_QChar test that produces 20K test cases. Replacing with a std::vector should do nicely for our use-case. No attempt has been made at further reducing the complexity of QTestElement/QTestCoreElement/QTestElementAttribute. Pick-to: 6.2 Change-Id: Ie295f7cf937ec6abdc4606b6120818551ad285c7 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/testlib/qtestelement.cpp')
-rw-r--r--src/testlib/qtestelement.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/testlib/qtestelement.cpp b/src/testlib/qtestelement.cpp
index b468295917..e89accd82c 100644
--- a/src/testlib/qtestelement.cpp
+++ b/src/testlib/qtestelement.cpp
@@ -48,16 +48,17 @@ QTestElement::QTestElement(int type)
QTestElement::~QTestElement()
{
- delete listOfChildren;
+ for (auto *child : listOfChildren)
+ delete child;
}
-bool QTestElement::addLogElement(QTestElement *element)
+bool QTestElement::addChild(QTestElement *element)
{
if (!element)
return false;
if (element->elementType() != QTest::LET_Undefined) {
- element->addToList(&listOfChildren);
+ listOfChildren.push_back(element);
element->setParent(this);
return true;
}
@@ -65,7 +66,7 @@ bool QTestElement::addLogElement(QTestElement *element)
return false;
}
-QTestElement *QTestElement::childElements() const
+const std::vector<QTestElement*> &QTestElement::childElements() const
{
return listOfChildren;
}