CI: add CodeQL workflow tests
[project/libubox.git] / uloop.c
diff --git a/uloop.c b/uloop.c
index 89a7029c9baacf341df15739bf0fbfc09b08c554..da6f690cfad63f100f38510d087e81350cc1ea2b 100644 (file)
--- a/uloop.c
+++ b/uloop.c
@@ -264,6 +264,7 @@ out:
 
 int uloop_fd_delete(struct uloop_fd *fd)
 {
+       int ret;
        int i;
 
        for (i = 0; i < cur_nfds; i++) {
@@ -280,9 +281,11 @@ int uloop_fd_delete(struct uloop_fd *fd)
                uloop_fd_set_cb(fd, 0);
 
        fd->registered = false;
-       fd->flags = 0;
        uloop_fd_stack_event(fd, -1);
-       return __uloop_fd_delete(fd);
+       ret = __uloop_fd_delete(fd);
+       fd->flags = 0;
+
+       return ret;
 }
 
 static int64_t tv_diff(struct timeval *t1, struct timeval *t2)
@@ -466,7 +469,7 @@ static void uloop_signal_wake(int signo)
 {
        uint8_t sigbyte = signo;
 
-       if (signo == ECHILD)
+       if (signo == SIGCHLD)
                do_sigchld = true;
 
        do {
@@ -568,6 +571,7 @@ int uloop_signal_add(struct uloop_signal *s)
        if (s->orig.sa_handler != uloop_signal_wake) {
                sa.sa_handler = uloop_signal_wake;
                sa.sa_flags = 0;
+               sigemptyset(&sa.sa_mask);
                sigaction(s->signo, &sa, NULL);
        }