cmake-gui: Fix crash when built with Qt 5.14 or later

In commit d7679f6427 (QCMakeCacheView: use non-deprecated List and Set
constructions, 2020-06-10, v3.18.0-rc2~13^2) the conversion of the
`this->properties()` value to QSet is incorrect for Qt 5.14+.  The
problem is that `this->properties()` returns by value, so the range
`this->properties().begin(), this->properties().end()` provides
iterators to two different instances.  Use an intermediate temporary
copy of the value to get a consistent iterator range.

Fixes: #20981
This commit is contained in:
Brad King 2020-07-22 15:16:12 -04:00
parent d421274e3e
commit af6cf586f6

View File

@ -226,8 +226,9 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props)
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
QSet<QCMakeProperty> oldProps = this->properties().toSet();
#else
QSet<QCMakeProperty> oldProps = QSet<QCMakeProperty>(
this->properties().begin(), this->properties().end());
QCMakePropertyList const& oldPropsList = this->properties();
QSet<QCMakeProperty> oldProps =
QSet<QCMakeProperty>(oldPropsList.begin(), oldPropsList.end());
#endif
oldProps.intersect(newProps);
newProps.subtract(oldProps);