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>
This commit is contained in:
Friedemann Kleint 2020-09-18 13:00:21 +02:00 committed by Qt Cherry-pick Bot
parent fa7a839530
commit 0692398b0b

View File

@ -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);
}