From 779629ad3321b84fc8fad7d2d9b4561a8a99753e Mon Sep 17 00:00:00 2001 From: Seth Hillbrand Date: Sun, 12 Dec 2021 07:19:56 -0800 Subject: [PATCH] Fix deadlock Fixes https://gitlab.com/kicad/code/kicad/issues/9959 --- pcbnew/connectivity/connectivity_data.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pcbnew/connectivity/connectivity_data.cpp b/pcbnew/connectivity/connectivity_data.cpp index 6d516e3ac3..764c3c5c0e 100644 --- a/pcbnew/connectivity/connectivity_data.cpp +++ b/pcbnew/connectivity/connectivity_data.cpp @@ -85,7 +85,10 @@ bool CONNECTIVITY_DATA::Update( BOARD_ITEM* aItem ) void CONNECTIVITY_DATA::Build( BOARD* aBoard, PROGRESS_REPORTER* aReporter ) { - std::unique_lock lock( m_lock ); + std::unique_lock lock( m_lock, std::try_to_lock ); + + if( !lock ) + return; m_connAlgo.reset( new CN_CONNECTIVITY_ALGO ); m_connAlgo->Build( aBoard, aReporter ); @@ -102,7 +105,10 @@ void CONNECTIVITY_DATA::Build( BOARD* aBoard, PROGRESS_REPORTER* aReporter ) void CONNECTIVITY_DATA::Build( const std::vector& aItems ) { - std::unique_lock lock( m_lock ); + std::unique_lock lock( m_lock, std::try_to_lock ); + + if( !lock ) + return; m_connAlgo.reset( new CN_CONNECTIVITY_ALGO ); m_connAlgo->Build( aItems );