]> granicus.if.org Git - graphviz/commitdiff
fdpgen: allocate '_grid' as a global
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 23 Nov 2022 03:53:35 +0000 (19:53 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 23 Nov 2022 04:08:58 +0000 (20:08 -0800)
There is no need to heap-allocate this singleton.

lib/fdpgen/grid.c

index 13a9fa14ed43f5771560592c430673f71aee6c43..71fdbaab785dbc4c2895001e87952c431d0d605e 100644 (file)
@@ -25,6 +25,7 @@
 #include <fdpgen/grid.h>
 #include <common/macros.h>
 #include <stddef.h>
+#include <string.h>
 
   /* structure for maintaining a free list of cells */
 typedef struct _block {
@@ -112,7 +113,7 @@ static int ijcmpf(Dt_t * d, gridpt * p1, gridpt * p2, Dtdisc_t * disc)
     return 0;
 }
 
-static Grid *_grid;            /* hack because can't attach info. to Dt_t */
+static Grid _grid; // hack because can't attach info. to Dt_t
 
 /* newCell:
  * Allocate a new cell from free store and initialize its indices
@@ -125,7 +126,7 @@ static void *newCell(Dt_t * d, void *obj, Dtdisc_t * disc)
 
     (void)d;
     (void)disc;
-    newp = getCell(_grid);
+    newp = getCell(&_grid);
     newp->p.i = cellp->p.i;
     newp->p.j = cellp->p.j;
     newp->nodes = 0;
@@ -169,13 +170,9 @@ static Dtdisc_t gridDisc = {
  */
 Grid *mkGrid(int cellHint)
 {
-    Grid *g;
-
-    g = GNEW(Grid);
-    _grid = g;                 /* see comment above */
+    Grid *g = &_grid;
+    memset(g, 0, sizeof(*g)); // see comment above
     g->data = dtopen(&gridDisc, Dtoset);
-    g->listMem = 0;
-    g->listSize = 0;
     g->cellMem = newBlock(cellHint);
     return g;
 }
@@ -219,7 +216,6 @@ void delGrid(Grid * g)
     dtclose(g->data);
     freeBlock(g->cellMem);
     free(g->listMem);
-    free(g);
 }
 
 /* addGrid: