]> granicus.if.org Git - graphviz/commitdiff
gvpr: simplify 'freeOpts' by passing by value
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 2 Jul 2022 15:30:52 +0000 (08:30 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Mon, 4 Jul 2022 22:19:11 +0000 (15:19 -0700)
This also removes the conditional on `argc` in this function. The contained loop
is a no-op when `argc` is 0 and in this case `argv` is NULL, which it is well
defined to `free`.

lib/gvpr/gvpr.c

index 82ba2e1298441913a663384113250bfa607c366a..68032edb6679eb807a920d5d9e7a89dc1da79e3a 100644 (file)
@@ -15,7 +15,6 @@
  * Written by Emden Gansner
  */
 
-#include <assert.h>
 #include <unistd.h>
 #include "builddate.h"
 #include <gvpr/gprstate.h>
@@ -359,21 +358,15 @@ doFlags(char* arg, int argi, int argc, char** argv, options* opts)
     return argi;
 }
 
-static void
-freeOpts (options* opts)
-{
-    int i;
-    assert(opts != NULL);
-    if (opts->outFile != sfstdout)
-       sfclose (opts->outFile);
-    free (opts->inFiles);
-    if (opts->useFile)
-       free (opts->program);
-    if (opts->argc) {
-       for (i = 0; i < opts->argc; i++)
-           free (opts->argv[i]);
-       free (opts->argv);
-    }
+static void freeOpts(options opts) {
+    if (opts.outFile != sfstdout)
+       sfclose(opts.outFile);
+    free(opts.inFiles);
+    if (opts.useFile)
+       free(opts.program);
+    for (int i = 0; i < opts.argc; i++)
+       free(opts.argv[i]);
+    free(opts.argv);
 }
 
 /* scanArgs:
@@ -1082,7 +1075,7 @@ int gvpr (int argc, char *argv[], gvpropts * uopts)
     freeCompileProg (xprog);
     closeGPRState(state);
     if (ing) closeIngraph (ing);
-    freeOpts(&opts);
+    freeOpts(opts);
 
     if (uopts) {
        if (uopts->out) sfdisc (sfstdout, 0);