diff --git a/libc/src/sys/epoll/linux/epoll_create.cpp b/libc/src/sys/epoll/linux/epoll_create.cpp index 2e44e883ddf0a..dcd082b56f9ad 100644 --- a/libc/src/sys/epoll/linux/epoll_create.cpp +++ b/libc/src/sys/epoll/linux/epoll_create.cpp @@ -20,6 +20,11 @@ LLVM_LIBC_FUNCTION(int, epoll_create, ([[maybe_unused]] int size)) { #ifdef SYS_epoll_create int ret = LIBC_NAMESPACE::syscall_impl(SYS_epoll_create, size); #elif defined(SYS_epoll_create1) + if (size == 0) { + libc_errno = EINVAL; + return -1; + } + int ret = LIBC_NAMESPACE::syscall_impl(SYS_epoll_create1, 0); #else #error \ diff --git a/libc/test/src/sys/epoll/linux/epoll_create_test.cpp b/libc/test/src/sys/epoll/linux/epoll_create_test.cpp index 06c17c6cf29e6..2bbfe4fbe81ff 100644 --- a/libc/test/src/sys/epoll/linux/epoll_create_test.cpp +++ b/libc/test/src/sys/epoll/linux/epoll_create_test.cpp @@ -10,7 +10,6 @@ #include "test/UnitTest/ErrnoCheckingTest.h" #include "test/UnitTest/ErrnoSetterMatcher.h" #include "test/UnitTest/Test.h" -#include // For syscall numbers. using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher; using LlvmLibcEpollCreateTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; @@ -23,8 +22,6 @@ TEST_F(LlvmLibcEpollCreateTest, Basic) { ASSERT_THAT(LIBC_NAMESPACE::close(fd), Succeeds()); } -#ifdef SYS_epoll_create TEST_F(LlvmLibcEpollCreateTest, Fails) { ASSERT_THAT(LIBC_NAMESPACE::epoll_create(0), Fails(EINVAL)); } -#endif