incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Black <abl...@roguewave.com>
Subject [patch] Exec utility memory leak fix
Date Fri, 18 Aug 2006 23:04:24 GMT
Greetings all.

Below is a short patch to fix a couple minor memory leaks in the exec 
utility.  This leak was likely introduced with the support for complex 
targets.

--Andrew Black

Log:
	* runall.cpp (merge_argv): Update function documentation.
	  (run_target): Free argv array returned by merge_argv.

Index: runall.cpp
===================================================================
--- runall.cpp  (revision 432706)
+++ runall.cpp  (working copy)
@@ -73,6 +73,9 @@
     argument string is '%x' (no quotes), the contents of the provided argv
     array will be inserted into the return array at that point.

+   It is the responsibility of the caller to free() the returned blocks of
+   memory, which were allocated by a call to split_opt_string().
+
     @todo Figure out an escaping mechanism to allow '%x' to be passed to an
     executable

@@ -402,7 +405,6 @@
  static void
  run_target (char* target, char** argv)
  {
-    struct exec_attrs status;
      char** childargv;

      assert (0 != target);
@@ -418,12 +420,13 @@
      printf ("%-25.25s ", target_name);
      fflush (stdout);

-    if (!check_target_ok (childargv [0]))
-        return;
+    if (check_target_ok (childargv [0])) {
+        struct exec_attrs status = exec_file (childargv);
+        process_results (childargv [0], &status);
+    }

-    status = exec_file (childargv);
-
-    process_results (childargv [0], &status);
+    free (childargv [0]);
+    free (childargv);
  }

  /**


Mime
View raw message