From b7564f6f05ec3564f237a6b4b9fde91a2594499e Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Wed, 2 Dec 2020 12:32:59 -0500 Subject: [PATCH] Don't modify RTree while iterating over it Fixes https://gitlab.com/kicad/code/kicad/-/issues/6582 --- eeschema/dialogs/dialog_change_symbols.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/eeschema/dialogs/dialog_change_symbols.cpp b/eeschema/dialogs/dialog_change_symbols.cpp index 049dd30d3f..c889124a65 100644 --- a/eeschema/dialogs/dialog_change_symbols.cpp +++ b/eeschema/dialogs/dialog_change_symbols.cpp @@ -387,12 +387,13 @@ bool DIALOG_CHANGE_SYMBOLS::processMatchingSymbols() wxCHECK2( screen, continue ); + std::vector components; + for( SCH_ITEM* item : screen->Items().OfType( SCH_COMPONENT_T ) ) + components.push_back( static_cast( item ) ); + + for( SCH_COMPONENT* symbol : components ) { - SCH_COMPONENT* symbol = dynamic_cast( item ); - - wxCHECK2( symbol, continue ); - if( !isMatch( symbol, &instance ) ) continue;