From: Matthew Fernandez Date: Sun, 7 Aug 2022 16:42:49 +0000 (-0700) Subject: gvpr traverse: use a local agxbuf instead of GVPR state’s 'tmp' X-Git-Tag: 5.0.1~9^2~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1c5edf2d63056fb36f25936508c1cffbf3d9d013;p=graphviz gvpr traverse: use a local agxbuf instead of GVPR state’s 'tmp' This makes it clearer to both humans and the compiler that the data written to this buffer is not required beyond this function. This also gets us closer to removing an SFIO dependency. Gitlab: #1873 --- diff --git a/lib/gvpr/gvpr.c b/lib/gvpr/gvpr.c index 4af4a0b7d..24598f396 100644 --- a/lib/gvpr/gvpr.c +++ b/lib/gvpr/gvpr.c @@ -719,22 +719,25 @@ static void doCleanup (Agraph_t* g) */ static int traverse(Gpr_t * state, Expr_t* prog, comp_block * bp, int cleanup) { - char *target; - if (!state->target) { + char *target; + agxbuf tmp = {0}; + agxbinit(&tmp, 0, NULL); + if (state->name_used) { - sfprintf(state->tmp, "%s%d", state->tgtname, state->name_used); - target = sfstruse(state->tmp); + agxbprint(&tmp, "%s%d", state->tgtname, state->name_used); + target = agxbuse(&tmp); } else target = state->tgtname; state->name_used++; /* make sure target subgraph does not exist */ while (agsubg (state->curgraph, target, 0)) { state->name_used++; - sfprintf(state->tmp, "%s%d", state->tgtname, state->name_used); - target = sfstruse(state->tmp); + agxbprint(&tmp, "%s%d", state->tgtname, state->name_used); + target = agxbuse(&tmp); } state->target = openSubg(state->curgraph, target); + agxbfree(&tmp); } if (!state->outgraph) state->outgraph = state->target;