From 4c3098be1c5abaed610b8f10216d59829fc107ce Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Thu, 4 Sep 2025 22:59:47 +0800 Subject: Fix SetFileDescriptorFlags (by adding testing). --- src/base/platform/unix/UnixFile.cpp | 2 +- test/base/platform/unix/UnixFileTest.cpp | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/base/platform/unix/UnixFile.cpp b/src/base/platform/unix/UnixFile.cpp index 763161ce..6d2dea89 100644 --- a/src/base/platform/unix/UnixFile.cpp +++ b/src/base/platform/unix/UnixFile.cpp @@ -98,7 +98,7 @@ ssize_t UnixFileDescriptor::Read(void* buffer, size_t size) { void UnixFileDescriptor::SetFileDescriptorFlags(int flags) { EnsureValid(); - if (::fcntl(GetValue(), F_SETFL, flags) != -1) { + if (::fcntl(GetValue(), F_SETFL, flags) == -1) { throw ErrnoException("Failed to set flags on file descriptor."); } } diff --git a/test/base/platform/unix/UnixFileTest.cpp b/test/base/platform/unix/UnixFileTest.cpp index d5bba0db..b18b6bce 100644 --- a/test/base/platform/unix/UnixFileTest.cpp +++ b/test/base/platform/unix/UnixFileTest.cpp @@ -1,12 +1,12 @@ -#include "cru/base/platform/unix/UnixFileStream.h" +#include "cru/base/platform/unix/UnixFile.h" #include #include #include -TEST_CASE("UnixFile Work", "[unix]") { +TEST_CASE("UnixFile Auto Close", "[unix]") { using namespace cru; using namespace cru::platform::unix; @@ -36,3 +36,13 @@ TEST_CASE("UnixFile Work", "[unix]") { std::filesystem::remove(temp_file_path); } + +TEST_CASE("UnixFile NonBlock Read", "[unix]") { + using namespace cru; + using namespace cru::platform::unix; + + char buffer[1]; + + auto pipe = OpenUniDirectionalPipe(UnixPipeFlags::NonBlock); + REQUIRE(pipe.read.Read(buffer, 1) == -1); +} -- cgit v1.2.3