diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-09-18 13:00:21 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-09-19 10:56:06 +0000 |
commit | 0692398b0b1ce505d8d84791dfd99c390c8ecf69 (patch) | |
tree | 10f38c2f0d5dad17d0762f694e52157069a17566 /src | |
parent | fa7a83953047fa79c27dc8e5bb9d42cb07fe2b7f (diff) |
Fix a double deletion in QDomAttr::setNodeValue()
Check the reference count before deleting. Patch
as contributed on bug report.
Fixes: QTBUG-86547
Change-Id: I2cb197e3eeda7ade2442c23f6b4f1ae6ff2ff810
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit af22ccf5605c6b7b20b845fb2b4003d3f56d8bc9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/xml/dom/qdom.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp index 5893d8448e..dd6916f946 100644 --- a/src/xml/dom/qdom.cpp +++ b/src/xml/dom/qdom.cpp @@ -4117,7 +4117,9 @@ void QDomAttrPrivate::setNodeValue(const QString& v) // keep the refcount balanced: appendChild() does a ref anyway. t->ref.deref(); if (first) { - delete removeChild(first); + auto removed = removeChild(first); + if (removed && !removed->ref) + delete removed; } appendChild(t); } |