fix reintroduction of errno clobbering by atfork handlers
[musl] / src / process / fork.c
1 #include <unistd.h>
2 #include <errno.h>
3 #include "libc.h"
4
5 static void dummy(int x) { }
6 weak_alias(dummy, __fork_handler);
7
8 pid_t fork(void)
9 {
10         __fork_handler(-1);
11         pid_t ret = _Fork();
12         int errno_save = errno;
13         __fork_handler(!ret);
14         if (ret<0) errno = errno_save;
15         return ret;
16 }