]> granicus.if.org Git - graphviz/commitdiff
gv2gxl writeHdr: fix memory leak
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 22 Jan 2023 18:48:50 +0000 (10:48 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 28 Jan 2023 06:46:29 +0000 (22:46 -0800)
Gitlab: #1950

cmd/tools/gv2gxl.c

index e28a1e9bd189c419c5e4e156c6dc2716aad7eb3b..dedcadf4fd76fb5c073e2a752c44cdcdab162799 100644 (file)
@@ -443,7 +443,6 @@ writeHdr(gxlstate_t * stp, Agraph_t * g, FILE * gxlFile, int top)
     char *name;
     char *kind;
     char *uniqueName;
-    size_t len;
 
     Level++;
     stp->attrsNotWritten = AGATTRWF(g);
@@ -456,9 +455,9 @@ writeHdr(gxlstate_t * stp, Agraph_t * g, FILE * gxlFile, int top)
     if (!top && agparent(g)) {
        /* this must be anonymous graph */
 
-       len = strlen(name) + sizeof("N_");
-       char *bp = gv_calloc(len, sizeof(bp[0]));
-       sprintf(bp, "N_%s", name);
+       agxbuf buf = {0};
+       agxbprint(&buf, "N_%s", name);
+       char *bp = agxbuse(&buf);
        if (idexists(stp->idList, bp) || !legalGXLName(bp)) {
            bp = createNodeId(stp->idList);
        } else {
@@ -468,6 +467,7 @@ writeHdr(gxlstate_t * stp, Agraph_t * g, FILE * gxlFile, int top)
 
        tabover(gxlFile);
        fprintf(gxlFile, "<node id=\"%s\">\n", bp);
+       agxbfree(&buf);
        Level++;
     } else {
        Tailport = agattr(g, AGEDGE, "tailport", NULL);