mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Use QMutableHashIterator for deleting items from a QHash
KItemListViewAnimation::slotFinished() used a QHashIterator to iterate over a QHash, and then removes an item from the hash using QHash::remove() inside the loop. This is quite unusual - the recommended way is to use a QMutableHashIterator (or std-style iterators and then QHash::erase(it)). This might be related to the cause of a crash in this function. BUG: 331876 REVIEW: 116666 FIXED-IN: 4.13.0
This commit is contained in:
parent
6747241934
commit
773d505493
|
@ -225,13 +225,13 @@ void KItemListViewAnimation::slotFinished()
|
|||
{
|
||||
QPropertyAnimation* finishedAnim = qobject_cast<QPropertyAnimation*>(sender());
|
||||
for (int type = 0; type < AnimationTypeCount; ++type) {
|
||||
QHashIterator<QGraphicsWidget*, QPropertyAnimation*> it(m_animation[type]);
|
||||
QMutableHashIterator<QGraphicsWidget*, QPropertyAnimation*> it(m_animation[type]);
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
QPropertyAnimation* propertyAnim = it.value();
|
||||
if (propertyAnim == finishedAnim) {
|
||||
QGraphicsWidget* widget = it.key();
|
||||
m_animation[type].remove(widget);
|
||||
it.remove();
|
||||
finishedAnim->deleteLater();
|
||||
|
||||
emit finished(widget, static_cast<AnimationType>(type));
|
||||
|
|
Loading…
Reference in a new issue