From 66d0f3b171b7cd8cb5a7e1b7dfa05fea77eb4f5a Mon Sep 17 00:00:00 2001 From: erg Date: Wed, 22 Dec 2010 19:32:39 +0000 Subject: [PATCH] Partial fix for bug 2088 --- lib/common/labels.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/common/labels.c b/lib/common/labels.c index 4af5f1935..7fb9dc93c 100644 --- a/lib/common/labels.c +++ b/lib/common/labels.c @@ -289,6 +289,7 @@ char *strdup_and_subst_obj(char *str, void *obj) h_len = 2, t_len = 2, l_len = 2, tp_len = 0, hp_len = 0; int newlen = 0; + int isEdge = 0; textlabel_t *tl; port pt; @@ -319,6 +320,7 @@ char *strdup_and_subst_obj(char *str, void *obj) } break; case AGEDGE: + isEdge = 1; g_str = agnameof(agroot(agraphof(agtail(((edge_t *)obj))))); g_len = strlen(g_str); t_str = agnameof(agtail(((edge_t *)obj))); @@ -392,16 +394,18 @@ char *strdup_and_subst_obj(char *str, void *obj) for (t = n_str; (*p = *t++); p++); break; case 'E': - for (t = t_str; (*p = *t++); p++); - if (tp_len) { - *p++ = ':'; - for (t = tp_str; (*p = *t++); p++); - } - for (t = e_str; (*p = *t++); p++); - for (t = h_str; (*p = *t++); p++); - if (hp_len) { - *p++ = ':'; - for (t = hp_str; (*p = *t++); p++); + if (isEdge) { + for (t = t_str; (*p = *t++); p++); + if (tp_len) { + *p++ = ':'; + for (t = tp_str; (*p = *t++); p++); + } + for (t = e_str; (*p = *t++); p++); + for (t = h_str; (*p = *t++); p++); + if (hp_len) { + *p++ = ':'; + for (t = hp_str; (*p = *t++); p++); + } } break; case 'T': -- 2.40.0