diff options
Diffstat (limited to 'src/multimedia/audio/qsamplecache_p.cpp')
-rw-r--r-- | src/multimedia/audio/qsamplecache_p.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/multimedia/audio/qsamplecache_p.cpp b/src/multimedia/audio/qsamplecache_p.cpp index 8043b770c..23c970405 100644 --- a/src/multimedia/audio/qsamplecache_p.cpp +++ b/src/multimedia/audio/qsamplecache_p.cpp @@ -119,11 +119,12 @@ QSampleCache::~QSampleCache() // Killing the loading thread means that no samples can be // deleted using deleteLater. And some samples that had deleteLater // already called won't have been processed (m_staleSamples) - foreach (QSample* sample, m_samples) - delete sample; + for (auto it = m_samples.cbegin(), end = m_samples.cend(); it != end; ++it) + delete it.value(); - foreach (QSample* sample, m_staleSamples) - delete sample; // deleting a sample does affect the m_staleSamples list, but foreach copies it + const auto copyStaleSamples = m_staleSamples; //deleting a sample does affect the m_staleSamples list, but we create a copy + for (QSample* sample : copyStaleSamples) + delete sample; m_networkAccessManager->deleteLater(); } @@ -194,8 +195,9 @@ void QSampleCache::setCapacity(qint64 capacity) if (sample->m_ref == 0) { unloadSample(sample); it = m_samples.erase(it); - } else - it++; + } else { + ++it; + } } } |