From 8d76a9a56afac224105668a85764bbddaf48c36e Mon Sep 17 00:00:00 2001 From: Giles Atkinson <“gatk555@gmail.com”> Date: Sat, 3 May 2025 08:55:29 +0100 Subject: [PATCH] Improve efficiency of linked list search. (See BUG 783). --- src/spicelib/analysis/cktdltn.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/spicelib/analysis/cktdltn.c b/src/spicelib/analysis/cktdltn.c index 7be581fb6..8e7c5e257 100644 --- a/src/spicelib/analysis/cktdltn.c +++ b/src/spicelib/analysis/cktdltn.c @@ -20,7 +20,7 @@ CKTdltNod(CKTcircuit* ckt, CKTnode* node) int CKTdltNNum(CKTcircuit* ckt, int num) { - CKTnode* n, * prev, * node, * sprev; + CKTnode* n, * prev, * node; int error; if (!ckt->prev_CKTlastNode->number || num <= ckt->prev_CKTlastNode->number) { @@ -30,12 +30,11 @@ CKTdltNNum(CKTcircuit* ckt, int num) prev = NULL; node = NULL; - sprev = NULL; for (n = ckt->CKTnodes; n; n = n->next) { if (n->number == num) { node = n; - sprev = prev; + break; } prev = n; } @@ -45,14 +44,14 @@ CKTdltNNum(CKTcircuit* ckt, int num) ckt->CKTmaxEqNum -= 1; - if (!sprev) { + if (!prev) { ckt->CKTnodes = node->next; } else { - sprev->next = node->next; + prev->next = node->next; } if (node == ckt->CKTlastNode) - ckt->CKTlastNode = sprev; + ckt->CKTlastNode = prev; error = SPfrontEnd->IFdelUid(ckt, node->name, UID_SIGNAL); tfree(node);