BOARD_NETLIST_UPDATER: disable auto refill zones if new footprints are loaded and waiting for placement.

Auto refill creates a crash when these footprints are moved, probably due to a partial
connectivity rebuild due to refilling when the connectivity data is not yet finalized.
Fixes #11830
https://gitlab.com/kicad/code/kicad/issues/11830
This commit is contained in:
jean-pierre charras 2022-08-26 10:38:36 +02:00
parent 103b8a0d2c
commit d351d0c839
1 changed files with 7 additions and 2 deletions

View File

@ -6,7 +6,7 @@
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
*
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@ -1012,7 +1012,12 @@ bool BOARD_NETLIST_UPDATER::UpdateNetlist( NETLIST& aNetlist )
m_board->GetNetInfo().RemoveUnusedNets();
m_commit.SetResolveNetConflicts();
m_commit.Push( _( "Update netlist" ) );
// When new footprints are added, the automatic zone refill is disabled because:
// * it creates crashes when calculating dynamic ratsnests if auto refill is enabled.
// (the auto refills rebuild the connectivity with incomplete data)
// * it is useless because zones will be refilled after placing new footprints
m_commit.Push( _( "Update netlist" ), m_newFootprintsCount ? ZONE_FILL_OP : 0 );
m_board->SynchronizeNetsAndNetClasses();
m_frame->SaveProjectSettings();