stdcxx-dev mailing list archives

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

I think the problem is that the Solaris patch utility has problems with 
whitespace fuzz (specifically with changes in trailing whitespace).

When I pulled your attached copy of the patch and applied it (on my 
linux box), I recieved the following message:

[ablack@quandry util]$ patch < leakfix.diff
patching file runall.cpp
Hunk #1 succeeded at 73 with fuzz 1.

Attempting to apply it on one of our Solaris machine resulted in the 
same behavior you observed (along with a failed application).

When I compared the output from svn diff after applying it with the 
patch you sent back, I found the following output:

[ablack@quandry util]$ svn diff | diff -u leakfix.diff -
--- leakfix.diff        2006-08-25 10:54:56.000000000 -0600
+++ -   2006-08-25 11:04:47.000000000 -0600
@@ -1,41 +1,41 @@
  Index: runall.cpp
  ===================================================================
---- runall.cpp  (revision 432706)
-+++ runall.cpp  (working copy)
+--- runall.cpp (revision 436850)
++++ runall.cpp (working copy)
  @@ -73,6 +73,9 @@
-    argument string is '%x' (no quotes), the contents of the provided argv
+    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);
   }
-
+
   /**

--Andrew Black

Martin Sebor wrote:
> Andrew Black wrote:
>> 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.
> 
> Hmm, I'm having trouble applying this patch on Solaris 9.
> Attached is the the patch itself (copied from your post)
> and the .rej file. Do you see what the problem is?
> 
> Martin
> 
[...]

Mime
View raw message