diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index 3ed428161..95d367436 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -1620,9 +1620,10 @@ get_subckts_for_subckt(struct line *start_card, char *subckt_name, bool has_models) { struct line *card; - char *new_names[100]; + int first_new_subckt = used_subckts->num_names; + bool found_subckt = FALSE; - int i, tmp_cnt = 0; + int i, fence; for (card = start_card; card; card = card->li_next) { @@ -1651,7 +1652,7 @@ get_subckts_for_subckt(struct line *start_card, char *subckt_name, if (strcmp(used_subckts->names[i], inst_subckt_name) == 0) have_subckt = TRUE; if (!have_subckt) { - new_names[tmp_cnt++] = used_subckts->names[used_subckts->num_names++] = inst_subckt_name; + used_subckts->names[used_subckts->num_names++] = inst_subckt_name; } else { tfree(inst_subckt_name); } @@ -1691,8 +1692,9 @@ get_subckts_for_subckt(struct line *start_card, char *subckt_name, } // now make recursive call on instances just found above - for (i = 0; i < tmp_cnt; i++) - get_subckts_for_subckt(start_card, new_names[i], + fence = used_subckts->num_names; + for (i = first_new_subckt; i < fence; i++) + get_subckts_for_subckt(start_card, used_subckts->names[i], used_subckts, used_models, has_models); } @@ -1708,7 +1710,7 @@ comment_out_unused_subckt_models(struct line *start_card, int no_of_lines) { struct line *card; struct nlist used_subckts, used_models; - int i = 0, tmp_cnt = 0; + int i = 0, fence; bool processing_subckt = FALSE, remove_subckt = FALSE, has_models = FALSE; int skip_control = 0, nested_subckt = 0; @@ -1763,7 +1765,6 @@ comment_out_unused_subckt_models(struct line *start_card, int no_of_lines) found_subckt = TRUE; if (!found_subckt) { used_subckts.names[used_subckts.num_names++] = subckt_name; - tmp_cnt++; } else { tfree(subckt_name); } @@ -1804,7 +1805,8 @@ comment_out_unused_subckt_models(struct line *start_card, int no_of_lines) } /* if (!processing_subckt) */ } /* for loop through all cards */ - for (i = 0; i < tmp_cnt; i++) + fence = used_subckts.num_names; + for (i = 0; i < fence; i++) get_subckts_for_subckt(start_card, used_subckts.names[i], &used_subckts, &used_models, has_models);