diff options
| author | Tatiana Borisova <tatiana.borisova@qt.io> | 2024-11-26 21:18:40 +0100 |
|---|---|---|
| committer | Tatiana Borisova <tatiana.borisova@qt.io> | 2024-12-05 18:02:34 +0100 |
| commit | 387633a6069a5e0e9b976971691b1b82725b6132 (patch) | |
| tree | 1bfc5db8b83c14852d2c56081b40ef67285370c5 /src/corelib/kernel/qobject.cpp | |
| parent | 7b0097560359e038be006507e23f52c04263e207 (diff) | |
QDomDocument::toByteArray() crashed in case of high XML nesting level
The issue the combination of:
- 300+ XML nesting level
- Small stack size, by default on Windows (1 MB)
- Unexpected and unexplained large stack frames with MSVC (3.5 kB)
The described factors combination leads to the stack overflow on
Windows + MSVC.
To fix the problem, I got rid of the recursive call from
QDomElementPrivate::save() and removed QDomNodePrivate::save()
implementation.
Instead of those I added the method that iterates through the tree not
using recursion.
[ChangeLog][QtXml] QDomDocument::toByteArray() now iterates the
nodes of the document instead of recursing into subnodes. This avoids
a stack-overflow crash that used to arise with deeply-nested document
structures.
Fixes: QTBUG-131151
Pick-to: 6.8
Change-Id: Ib74aaef1422716f2aafcb89dfc8c05ef334e2a54
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
0 files changed, 0 insertions, 0 deletions
