]> granicus.if.org Git - graphviz/commitdiff
mm2gv makeDotGraph: replace 'sprintf' with 'agxbprint'
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 28 Jan 2023 16:22:47 +0000 (08:22 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Mon, 30 Jan 2023 15:43:10 +0000 (07:43 -0800)
Given this function already has an agxbuf that was not in use while needing to
construct these temporaries, we can reuse it to avoid allocating a separate
buffer on the stack. This also improves safety by avoiding `sprintf`.

Gitlab: #1950

cmd/tools/mm2gv.c

index e578bf676b9b07665ef3ed5eb946c553502b1d16..3e97a3656564cb27f3548f6c4520ff6df0ccfb60 100644 (file)
@@ -85,7 +85,6 @@ static Agraph_t *makeDotGraph(SparseMatrix A, char *name, int dim,
     Agedge_t *e;
     int i, j;
     agxbuf xb;
-    char buf[BUFS];
     char string[BUFS];
     Agsym_t *sym = NULL, *sym2 = NULL, *sym3 = NULL;
     int *ia = A->ia;
@@ -124,8 +123,8 @@ static Agraph_t *makeDotGraph(SparseMatrix A, char *name, int dim,
     }
 
     for (i = 0; i < A->m; i++) {
-       sprintf(buf, "%d", i);
-       n = agnode(g, buf, 1);
+       agxbprint(&xb, "%d", i);
+       n = agnode(g, agxbuse(&xb), 1);
        agbindrec(n, "nodeinfo", sizeof(Agnodeinfo_t), true);
        ND_id(n) = i;
        arr[i] = n;
@@ -185,13 +184,13 @@ static Agraph_t *makeDotGraph(SparseMatrix A, char *name, int dim,
            h = arr[ja[j]];
            e = agedge(g, n, h, NULL, 1);
            if (sym && val) {
-               sprintf(buf, "%f", val[j]);
-               agxset(e, sym, buf);
+               agxbprint(&xb, "%f", val[j]);
+               agxset(e, sym, agxbuse(&xb));
            }
            if (with_color) {
                agxset (e, sym2, hue2rgb(.65 * color[j], cstring));
-               sprintf(buf, "%f", color[j]);
-               agxset(e, sym3, buf);
+               agxbprint(&xb, "%f", color[j]);
+               agxset(e, sym3, agxbuse(&xb));
            }
        }
     }