-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <[email protected]>
- Loading branch information
1 parent
7b00975
commit 387633a
Showing
4 changed files
with
470 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.