diff --git a/src/actions.c b/src/actions.c index cec6ccc2..90d13c1f 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1723,7 +1723,9 @@ int descend_schematic(int instnumber) find_nth(net_node, ",", ((inst_number - 1) * mult + k - 1) % net_mult + 1)); single_n_ptr = single_n; if(single_n_ptr[0] == '#') { - my_mstrcat(_ALLOC_ID_, &single_n, "[", my_itoa((inst_mult - inst_number + 1) * mult - k), "]", NULL); + if(mult > 1) { + my_mstrcat(_ALLOC_ID_, &single_n, "[", my_itoa((inst_mult - inst_number + 1) * mult - k), "]", NULL); + } single_n_ptr = single_n + 1; } str_hash_lookup(&xctx->portmap[xctx->currsch + 1], single_p, single_n_ptr, XINSERT); diff --git a/src/hilight.c b/src/hilight.c index 9a74ee77..fb9f8d17 100644 --- a/src/hilight.c +++ b/src/hilight.c @@ -1907,16 +1907,20 @@ char *resolved_net(const char *net) } } dbg(1, "path=%s\n", path); - my_strdup(_ALLOC_ID_, &exp_net, expandlabel(net, &mult)); + my_strdup2(_ALLOC_ID_, &exp_net, expandlabel(net, &mult)); n_s1 = exp_net; for(k = 0; k < mult; k++) { char *net_name = my_strtok_r(n_s1, ",", "", &n_s2); level = xctx->currsch; n_s1 = NULL; resolved_net = net_name; + dbg(1, "resolved_net(): resolved_net=%s\n", resolved_net); while(level > start_level) { entry = str_hash_lookup(&xctx->portmap[level], resolved_net, NULL, XLOOKUP); - if(entry) resolved_net = entry->value; + if(entry) { + resolved_net = entry->value; + dbg(1, "resolved_net(): while loop: resolved_net=%s\n", resolved_net); + } else break; level--; } diff --git a/src/token.c b/src/token.c index 5953d34b..7302a360 100644 --- a/src/token.c +++ b/src/token.c @@ -3425,6 +3425,7 @@ const char *translate(int inst, const char* s) my_strdup2(_ALLOC_ID_, &net, net_name(inst, 0, &multip, 0, 0)); } if(multip == 1) { + char *rn; len = strlen(path) + strlen(net) + 1; dbg(1, "translate() @spice_get_voltage: inst=%s\n", xctx->inst[inst].instname); dbg(1, " net=%s\n", net); @@ -3432,7 +3433,10 @@ const char *translate(int inst, const char* s) * fqnet = my_malloc(_ALLOC_ID_, len); * my_snprintf(fqnet, len, "%s%s", path, net); */ + + rn = resolved_net(net); my_strdup2(_ALLOC_ID_, &fqnet, resolved_net(net)); + if(rn) my_free(_ALLOC_ID_, &rn); strtolower(fqnet); dbg(1, "translate() @spice_get_voltage: fqnet=%s start_level=%d\n", fqnet, start_level); idx = get_raw_index(fqnet);