use direct syscall rather than write function in posix_spawn child

the write function is a cancellation point and accesses thread-local
state belonging to the calling thread in the parent process. since
cancellation is blocked for the duration of posix_spawn, this is
probably safe, but it's fragile and unnecessary. making the syscall
directly is just as easy and clearly safe.
This commit is contained in:
Rich Felker 2014-12-05 21:19:39 -05:00
parent 1c12c24364
commit 8f7bc690f0
1 changed files with 1 additions and 1 deletions

View File

@ -136,7 +136,7 @@ static int child(void *args_vp)
fail:
/* Since sizeof errno < PIPE_BUF, the write is atomic. */
ret = -ret;
if (ret) while (write(p, &ret, sizeof ret) < 0);
if (ret) while (__syscall(SYS_write, p, &ret, sizeof ret) < 0);
_exit(127);
}