* Fix some memory and file descriptor leaks.
authorPaul Smith <psmith@gnu.org>
Fri, 16 Jul 1999 22:28:46 +0000 (22:28 +0000)
committerPaul Smith <psmith@gnu.org>
Fri, 16 Jul 1999 22:28:46 +0000 (22:28 +0000)
.purify [new file with mode: 0644]
ChangeLog
job.c
read.c

diff --git a/.purify b/.purify
new file mode 100644 (file)
index 0000000..098e741
--- /dev/null
+++ b/.purify
@@ -0,0 +1,5 @@
+suppress plk malloc; setvbuf "libc*"; main "main.c"
+suppress mlk malloc; xmalloc "misc.c"; decode_env_switches "main.c"
+suppress plk malloc; xmalloc "misc.c"; decode_env_switches "main.c"
+suppress mlk malloc; xmalloc "misc.c"; concat "misc.c"; decode_env_switches "main.c"
+suppress plk malloc; xmalloc "misc.c"; concat "misc.c"; decode_env_switches "main.c"
index 8288d77..3895a85 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+1999-07-16  Paul D. Smith  <psmith@gnu.org>
+
+       * .purify: New file: suppress some known-OK Purify messages.
+
+       * read.c (read_makefile): Remember to free the commands buffer if
+       we can't find a makefile.
+
+       * job.c (start_job_command): Broken #ifdef test: look for F_SETFD,
+       not FD_SETFD.  Close-on-exec isn't getting set on the bad_stdin
+       file descriptor and it's leaking :-/.
+
 1999-07-15  Paul D. Smith  <psmith@gnu.org>
 
        * read.c (read_makefile): Fix some potential memory stomps parsing
diff --git a/job.c b/job.c
index caabb1e..e84897b 100644 (file)
--- a/job.c
+++ b/job.c
@@ -897,7 +897,7 @@ start_job_command (child)
          /* Set the descriptor to close on exec, so it does not litter any
             child's descriptor table.  When it is dup2'd onto descriptor 0,
             that descriptor will not close on exec.  */
-#ifdef FD_SETFD
+#ifdef F_SETFD
 #ifndef FD_CLOEXEC
 #define FD_CLOEXEC 1
 #endif
@@ -980,7 +980,7 @@ start_job_command (child)
          /* We are the child side.  */
          unblock_sigs ();
          child_execute_job (child->good_stdin ? 0 : bad_stdin, 1,
-                            argv, child->environment);
+                             argv, child->environment);
        }
       else if (child->pid < 0)
        {
diff --git a/read.c b/read.c
index 4ac9745..0a39ef6 100644 (file)
--- a/read.c
+++ b/read.c
@@ -396,6 +396,7 @@ read_makefile (filename, flags)
         attempt, rather from FILENAME itself.  Restore it in case the
         caller wants to use it in a message.  */
       errno = makefile_errno;
+      free (commands);
       return 0;
     }