Index: trunk/src/libcschem/abstract.c =================================================================== --- trunk/src/libcschem/abstract.c (revision 10090) +++ trunk/src/libcschem/abstract.c (revision 10091) @@ -151,15 +151,17 @@ } } -csch_anet_t *csch_anet_get(csch_abstract_t *abs, const char *netname, int alloc, int set_no_uname) +csch_anet_t *csch_anet_get(csch_abstract_t *abs, const char *netname) { csch_anet_t *net; net = htsp_get(&abs->nets, netname); - if ((net != NULL) || (!alloc)) - return net; + return net; +} - net = calloc(sizeof(csch_anet_t), 1); +csch_anet_t *csch_anet_new(csch_abstract_t *abs, const char *netname, int set_no_uname) +{ + csch_anet_t *net = calloc(sizeof(csch_anet_t), 1); csch_aobj_init(abs, &net->hdr, CSCH_ATYPE_NET); net->name = rnd_strdup(netname); net->no_uname = set_no_uname; Index: trunk/src/libcschem/abstract.h =================================================================== --- trunk/src/libcschem/abstract.h (revision 10090) +++ trunk/src/libcschem/abstract.h (revision 10091) @@ -200,7 +200,8 @@ void csch_abstract_dump(const csch_abstract_t *abs, FILE *f, const char *prefix); /*** net ***/ -csch_anet_t *csch_anet_get(csch_abstract_t *abs, const char *netname, int alloc, int set_no_uname); +csch_anet_t *csch_anet_get(csch_abstract_t *abs, const char *netname); +csch_anet_t *csch_anet_new(csch_abstract_t *abs, const char *netname, int set_no_uname); /*** component and port ***/ csch_acomp_t *csch_acomp_get(csch_abstract_t *abs, const char *name, int alloc); Index: trunk/src/libcschem/compile.c =================================================================== --- trunk/src/libcschem/compile.c (revision 10090) +++ trunk/src/libcschem/compile.c (revision 10091) @@ -187,9 +187,12 @@ return -1; } - net = csch_anet_get(dst, name_glob, 1, no_uname); - if (net == NULL) - return -1; + net = csch_anet_get(dst, name_loc); + if (net == NULL) { + net = csch_anet_new(dst, name_glob, no_uname); + if (net == NULL) + return -1; + } net->hdepth = hpath->path.used; net->hparent = csch_hier_get_hparent(hpath); @@ -560,7 +563,7 @@ if (net == NULL) { char tmpname[128]; sprintf(tmpname, "anon_net_%ld", ++dst->ucnt.wirenet); - net = csch_anet_get(dst, tmpname, 1, 1); + net = csch_anet_new(dst, tmpname, 1); if (net == NULL) { rnd_msg_error("failed to create anon net for terminal-terminal connection\n"); return -1; Index: trunk/src/libcschem/util_compile.c =================================================================== --- trunk/src/libcschem/util_compile.c (revision 10090) +++ trunk/src/libcschem/util_compile.c (revision 10091) @@ -139,7 +139,9 @@ return -1; } - net = csch_anet_get(comp->hdr.abst, netname, 1, 0); + net = csch_anet_get(comp->hdr.abst, netname); + if (net == NULL) + net = csch_anet_new(comp->hdr.abst, netname, 0); if (net == NULL) { rnd_message(RND_MSG_ERROR, "Netname '%s' does not exist\n", netname); Index: trunk/src/plugins/backann/auto_ba.c =================================================================== --- trunk/src/plugins/backann/auto_ba.c (revision 10090) +++ trunk/src/plugins/backann/auto_ba.c (revision 10091) @@ -209,7 +209,7 @@ if (prj->abst == NULL) return -1; - net = csch_anet_get(prj->abst, netname, 0, 0); + net = csch_anet_get(prj->abst, netname); if (net == NULL) return -1; @@ -356,7 +356,7 @@ if (get_term_net_gr_conn(prj, ba->value.conn_del.net, ba->value.conn_del.comp, ba->value.conn_del.term, &termo, &wno, &conn, NULL) != 0) return NULL; - net = csch_anet_get(prj->abst, ba->value.conn_del.net, 0, 0); + net = csch_anet_get(prj->abst, ba->value.conn_del.net); if (net == NULL) return NULL; @@ -425,7 +425,7 @@ csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_anet_t *net; - net = csch_anet_get(prj->abst, ba->value.net_attr.net, 0, 0); + net = csch_anet_get(prj->abst, ba->value.net_attr.net); if (net == NULL) return NULL; Index: trunk/src/plugins/backann/check_ba.c =================================================================== --- trunk/src/plugins/backann/check_ba.c (revision 10090) +++ trunk/src/plugins/backann/check_ba.c (revision 10091) @@ -73,7 +73,7 @@ if (prj->abst == NULL) return -1; - net = csch_anet_get(prj->abst, netname, 0, 0); + net = csch_anet_get(prj->abst, netname); if (net == NULL) return -1; @@ -155,7 +155,7 @@ csch_project_t *prj = (csch_project_t *)ctx->sheet->hidlib.project; csch_anet_t *net; - net = csch_anet_get(prj->abst, ba->value.net_attr.net, 0, 0); + net = csch_anet_get(prj->abst, ba->value.net_attr.net); if (net == NULL) return -1; Index: trunk/src/plugins/lib_ngrp/lib_ngrp.c =================================================================== --- trunk/src/plugins/lib_ngrp/lib_ngrp.c (revision 10090) +++ trunk/src/plugins/lib_ngrp/lib_ngrp.c (revision 10091) @@ -193,9 +193,14 @@ /* create nets */ for(n = ctx->nets; n != NULL; n = n->next) { - csch_anet_t *anet = csch_anet_get(dst, n->name, 1, 1); - csch_cgrp_t *cgrp = get_src_oid(src, &src_oid); + csch_anet_t *anet; + csch_cgrp_t *cgrp; + anet = csch_anet_get(dst, n->name); + if (anet == NULL) + anet = csch_anet_new(dst, n->name, 1); + + cgrp = get_src_oid(src, &src_oid);; csch_compile_add_source(cgrp, &anet->hdr); comp_add_attrs(src, &anet->hdr, n->attr_head); } @@ -202,10 +207,15 @@ /* create connections */ for(cn = ctx->conns; cn != NULL; cn = cn->next) { - csch_anet_t *anet = csch_anet_get(dst, cn->netname, 1, 1); csch_acomp_t *acomp = csch_acomp_get(dst, cn->comp, 1); csch_aport_t *aport = csch_aport_get(dst, acomp, cn->port, 1); csch_cgrp_t *cgrp = get_src_oid(src, &src_oid); + csch_anet_t *anet; + + anet = csch_anet_get(dst, cn->netname); + if (anet == NULL) + anet = csch_anet_new(dst, cn->netname, 1); + csch_compile_add_source(cgrp, &aport->hdr); csch_compile_connect_net_to(&anet, &aport->hdr, 1); } Index: trunk/src/plugins/sim/mods.c =================================================================== --- trunk/src/plugins/sim/mods.c (revision 10090) +++ trunk/src/plugins/sim/mods.c (revision 10091) @@ -107,7 +107,7 @@ abst->ucnt.wirenet++; sprintf(tmpname, "__sim_net_%ld", abst->ucnt.wirenet); - net = csch_anet_get(abst, tmpname, 1, 1); + net = csch_anet_new(abst, tmpname, 1); if (net == NULL) rnd_message(RND_MSG_ERROR, "sim lookup_net(): internal error: can't allocate new dummy net\n"); if (port != NULL) { @@ -119,7 +119,7 @@ } /* fall back to net */ - net = csch_anet_get(abst, addr, 0, 0); + net = csch_anet_get(abst, addr); if (net == NULL) goto new_dummy_net; @@ -133,7 +133,7 @@ switch(tt) { case SCH_SIMTT_COMP: return (csch_ahdr_t *)csch_acomp_get(abst, name, 0); break; case SCH_SIMTT_PORT: return (csch_ahdr_t *)lookup_port(abst, name, NULL); break; - case SCH_SIMTT_NET: return (csch_ahdr_t *)csch_anet_get(abst, name, 0, 0); break; + case SCH_SIMTT_NET: return (csch_ahdr_t *)csch_anet_get(abst, name); break; default: return NULL; } return NULL; Index: trunk/src/plugins/target_spice/target_spice.c =================================================================== --- trunk/src/plugins/target_spice/target_spice.c (revision 10090) +++ trunk/src/plugins/target_spice/target_spice.c (revision 10091) @@ -606,7 +606,9 @@ tmp->used = 0; rnd_append_printf(tmp, "br_%s_%ld", modelsuff, puid); netname = tmp->array; - new_net = csch_anet_get(abst, netname, 1, 1); + new_net = csch_anet_get(abst, netname); + if (new_net == NULL) + new_net = csch_anet_new(abst, netname, 1); /*rnd_trace(" net: '%s' %p\n", netname, new_net);*/ old_net = port->conn.net;