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