Replace every use of the foreach macro with a C++11 range-based for loop
This prevents a race condition with Qt5. A foreach loop makes a copy of its Qt container, increasing the reference count to the container's internal data. Qt5 often asserts isDetached(), which requires the reference count to be <= 1. This assertion fails when the foreach loop increases the reference count at exactly the wrong moment. Using a range-based for loop prevents an unnecessary copy from being made and ensures this race condition isn't triggered.
This commit is contained in:
1 parent
ac67f2adb8
commit
3c7bfbac64
16 files changed
+27
-50
No files matched your search
@@ -216,7 +216,7 @@ void EffectSelectDialog::rowChanged( const QModelIndex & _idx,
|
||||
subLayout->setSpacing( 0 );
|
||||
m_currentSelection.desc->subPluginFeatures->
|
||||
fillDescriptionWidget( subWidget, &m_currentSelection );
|
||||
foreach( QWidget * w, subWidget->findChildren<QWidget *>() )
|
||||
for( QWidget * w : subWidget->findChildren<QWidget *>() )
|
||||
{
|
||||
if( w->parent() == subWidget )
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user