From a26ec804cbb331e1f7d8d2aa3905094e9bab5b5c Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 22 Apr 2017 21:18:44 +0200 Subject: [PATCH] inpcom.c, inp_reorder_params_subckt(), introduce insert_deck() --- src/frontend/inpcom.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index ce58136e9..7b07bfd4c 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -178,6 +178,20 @@ insert_new_line(struct line *card, char *line, int linenum, int linenum_orig) } +/* insert new_card, just behind the given card */ +static struct line * +insert_deck(struct line *card, struct line *new_card) +{ + if (card) { + new_card->li_next = card->li_next; + card->li_next = new_card; + } else { + new_card->li_next = NULL; + } + return new_card; +} + + static struct library * new_lib(void) { @@ -3893,14 +3907,11 @@ inp_reorder_params_subckt(struct names *subckt_w_params, struct line *subckt_car if (ciprefix(".para", curr_line)) { prev_card->li_next = c->li_next; - if (first_param_card) - last_param_card->li_next = c; - else - first_param_card = c; + last_param_card = insert_deck(last_param_card, c); - last_param_card = c; + if (!first_param_card) + first_param_card = last_param_card; - last_param_card->li_next = NULL; c = prev_card->li_next; continue; } @@ -3949,14 +3960,11 @@ inp_reorder_params(struct names *subckt_w_params, struct line *list_head) if (ciprefix(".para", curr_line)) { prev_card->li_next = c->li_next; - if (first_param_card) - last_param_card->li_next = c; - else - first_param_card = c; + last_param_card = insert_deck(last_param_card, c); - last_param_card = c; + if (!first_param_card) + first_param_card = last_param_card; - last_param_card->li_next = NULL; c = prev_card->li_next; continue; }