uloop: fix deleting pending fd events on uloop_fd_del
[project/libubox.git] / uloop.c
diff --git a/uloop.c b/uloop.c
index deb08a3..9a0590f 100644 (file)
--- a/uloop.c
+++ b/uloop.c
@@ -392,15 +392,16 @@ int uloop_fd_delete(struct uloop_fd *fd)
 {
        int i;
 
-       if (!fd->registered)
-               return 0;
-
        for (i = 0; i < cur_nfds; i++) {
                if (cur_fds[cur_fd + i].fd != fd)
                        continue;
 
                cur_fds[cur_fd + i].fd = NULL;
        }
+
+       if (!fd->registered)
+               return 0;
+
        fd->registered = false;
        uloop_fd_stack_event(fd, -1);
        return __uloop_fd_delete(fd);