From c12eea5b4d410435edf2da25433651dcf13b7eae Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Mon, 5 Aug 2024 23:05:10 +0200 Subject: [PATCH] autorouter: don't crash after comparing detours --- src/autorouter/compare_detours.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/autorouter/compare_detours.rs b/src/autorouter/compare_detours.rs index 12506ac..fe559f1 100644 --- a/src/autorouter/compare_detours.rs +++ b/src/autorouter/compare_detours.rs @@ -37,6 +37,7 @@ pub struct CompareDetours { ratline2: EdgeIndex, total_length1: Option, total_length2: Option, + done: bool, } impl CompareDetours { @@ -52,6 +53,7 @@ impl CompareDetours { ratline2, total_length1: None, total_length2: None, + done: false, }) } } @@ -65,6 +67,12 @@ impl Step, CompareDetoursStatus, AutorouterErro &mut self, autorouter: &mut Autorouter, ) -> Result { + if self.done { + return Ok(CompareDetoursStatus::Finished( + self.total_length1.unwrap() - self.total_length2.unwrap(), + )); + } + match self.autoroute.step(autorouter)? { AutorouteStatus::Running => Ok(CompareDetoursStatus::Running), AutorouteStatus::Routed(band_termseg) => { @@ -89,6 +97,7 @@ impl Step, CompareDetoursStatus, AutorouterErro Ok(CompareDetoursStatus::Running) } else { + self.done = true; autorouter.undo_autoroute_ratlines(vec![self.ratline2, self.ratline1]); Ok(CompareDetoursStatus::Finished(