overhaul cancellation to fix resource leaks and dangerous behavior with signals
[musl] / src / process / waitpid.c
index ec2757b..5e0320f 100644 (file)
@@ -1,7 +1,13 @@
 #include <sys/wait.h>
 #include "syscall.h"
+#include "libc.h"
 
 pid_t waitpid(pid_t pid, int *status, int options)
 {
-       return syscall(SYS_wait4, pid, status, options, 0);
+       int r;
+       CANCELPT_BEGIN;
+       r = syscall(SYS_wait4, pid, status, options, 0);
+       if (r<0) CANCELPT_TRY;
+       CANCELPT_END;
+       return r;
 }