guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

execl, execlp memory leak


From: Kevin Ryde
Subject: execl, execlp memory leak
Date: Wed, 25 Feb 2004 08:40:31 +1000
User-agent: Gnus/5.110002 (No Gnus v0.2) Emacs/21.3 (gnu/linux)

        * posix.c (scm_execl, scm_execlp): Avoid memory leak under error throw.

This can be seen with for instance

        (while #t
          (false-if-exception
           (execl "nosuchprog")))

This would be for the 1.6 branch too.

--- posix.c.~1.125.~    2004-02-22 07:54:37.000000000 +1000
+++ posix.c     2004-02-24 19:37:00.000000000 +1000
@@ -909,9 +909,13 @@
 #define FUNC_NAME s_scm_execl
 {
   char **execargv;
+  int save_errno;
   SCM_VALIDATE_STRING (1, filename);
   execargv = allocate_string_pointers (args);
   execv (SCM_STRING_CHARS (filename), execargv);
+  save_errno = errno;
+  free (execargv);
+  errno = save_errno;
   SCM_SYSERROR;
   /* not reached.  */
   return SCM_BOOL_F;
@@ -929,9 +933,13 @@
 #define FUNC_NAME s_scm_execlp
 {
   char **execargv;
+  int save_errno;
   SCM_VALIDATE_STRING (1, filename);
   execargv = allocate_string_pointers (args);
   execvp (SCM_STRING_CHARS (filename), execargv);
+  save_errno = errno;
+  free (execargv);
+  errno = save_errno;
   SCM_SYSERROR;
   /* not reached.  */
   return SCM_BOOL_F;

reply via email to

[Prev in Thread] Current Thread [Next in Thread]