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 Tue, 22 Aug 2006 14:38:33 GMT
Looking at the .rej file, I'm not seeing the difference between the two 
sections indicated.

What does it look like if you execute 'svn diff runall.cpp | diff 
runall.patch -' after applying the patch?  If there is no difference 
between the resulting patches, it would seem to me that the solaris 
patch utility has issues.

--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
> 
>>
>> --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