]> granicus.if.org Git - graphviz/commitdiff
smyrna: remove unnecessary 'strdup' calls in 'mTestgvpr'
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 9 Jul 2022 15:24:11 +0000 (08:24 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 16 Jul 2022 00:06:35 +0000 (17:06 -0700)
The strings being duplicated are passed through to `gvpr` which does not modify
its arguments. So by rearranging when we release `bf2`, we can remove the need
to dynamically allocate the members of `argv`.

cmd/smyrna/gui/menucallbacks.c

index aa806a0a72b166a186c8206dd631f77b79d11acb..75b05c51712f2ad2867bd21a5629a3bd7b90929e 100644 (file)
@@ -272,7 +272,7 @@ void mTestgvpr(GtkWidget * widget, gpointer user_data)
     GtkTextIter startit;
     GtkTextIter endit;
     const char *args;
-    int i, j, argc, cloneGraph;
+    int j, argc, cloneGraph;
     char **argv;
 
     args =
@@ -306,21 +306,28 @@ void mTestgvpr(GtkWidget * widget, gpointer user_data)
     j = 0;
     argv[j++] = "smyrna";
     if (cloneGraph)
-       argv[j++] = strdup("-C");
+       argv[j++] = "-C";
     if (*args != '\0') {
-       argv[j++] = strdup("-a");
-       argv[j++] = strdup(args);
+       argv[j++] = "-a";
+// Suppress Clang/GCC -Wcast-qual warning. Casting away const here is acceptable
+// as `run_gvpr` does not modify input arguments.
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-qual"
+#endif
+       argv[j++] = (char*)args;
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
     }
     if (*bf2 != '\0') {
-       argv[j++] = strdup(bf2);
-       g_free(bf2);
+       argv[j++] = bf2;
     }
     assert(j == argc);
 
     run_gvpr(view->g[view->activeGraph], argc, argv);
-    for (i = 1; i < argc; i++)
-       free(argv[i]);
     free(argv);
+    g_free(bf2);
 }
 
 /*