diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2021-09-08 16:34:19 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2021-09-10 22:19:45 +0200 |
commit | b8191f41c65a908d0529d235b0200e6de99c34fb (patch) | |
tree | 59d750687ba5896cd4638780bb32193a5f563961 /src/testlib/qtestelement.cpp | |
parent | 4e0082a9cacfdfd0c43e6105274bc0d41dd18801 (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.cpp | 9 |
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; } |