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);
}
/**