From 41e65b5214cb0dfaa851724c7bde70cdd3ed60d7 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Tue, 16 Apr 2024 20:51:52 -0400 Subject: [PATCH] Committing a patch to prevent segfaulting during "extresist" when non-Manhattan geometry is analyzed for resistance extraction. This patch merely prevents the crash condition. It does not solve the root of the problem, which is that split tiles can belong to two different nets, but the tile can hold extraction information for at most one of those nets. --- VERSION | 2 +- resis/ResMain.c | 2 +- resis/ResUtils.c | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 6644b4f9..7299c228 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.473 +8.3.474 diff --git a/resis/ResMain.c b/resis/ResMain.c index 1652a30a..2ab04583 100644 --- a/resis/ResMain.c +++ b/resis/ResMain.c @@ -432,7 +432,7 @@ ResFindNewContactTiles(contacts) (contacts->cp_currentcontact) += 1; j->contactList = ce; } - else + else if (!IsSplit(tile)) { TileType ttype = TiGetTypeExact(tile); if (DBIsContact(ttype)) diff --git a/resis/ResUtils.c b/resis/ResUtils.c index 05d5844e..29087de4 100644 --- a/resis/ResUtils.c +++ b/resis/ResUtils.c @@ -428,6 +428,10 @@ ResAddPlumbing(tile, arg) { t1 = (SplitSide(tp1)) ? SplitRightType(tp1) : SplitLeftType(tp1); + /* Check in case this is the wrong side */ + if (ExtCurStyle->exts_device[t1] == NULL) + t1 = (SplitSide(tp1)) ? SplitLeftType(tp1) : + SplitRightType(tp1); } else t1 = TiGetTypeExact(tp1);