diff options
author | crupest <crupest@outlook.com> | 2023-10-05 22:02:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-10-05 22:02:25 +0800 |
commit | 1550828518ff4719db88f35e088207816866a073 (patch) | |
tree | 217e35f48f6c08152bc607d804ad78c0a292e3cd /src/common/platform/unix | |
parent | 90feae14e708fbb0b313503a6e76cfbd77f94ce1 (diff) | |
download | cru-1550828518ff4719db88f35e088207816866a073.tar.gz cru-1550828518ff4719db88f35e088207816866a073.tar.bz2 cru-1550828518ff4719db88f35e088207816866a073.zip |
...
Diffstat (limited to 'src/common/platform/unix')
-rw-r--r-- | src/common/platform/unix/UnixFileStream.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/common/platform/unix/UnixFileStream.cpp b/src/common/platform/unix/UnixFileStream.cpp index 39870507..a952a7f2 100644 --- a/src/common/platform/unix/UnixFileStream.cpp +++ b/src/common/platform/unix/UnixFileStream.cpp @@ -2,10 +2,12 @@ #include "cru/common/Exception.h" #include "cru/common/Format.h" #include "cru/common/io/Stream.h" +#include "cru/common/log/Logger.h" #include <fcntl.h> #include <sys/fcntl.h> #include <unistd.h> +#include <cerrno> namespace cru::platform::unix { using namespace cru::io; @@ -56,7 +58,15 @@ UnixFileStream::UnixFileStream(int fd, bool can_seek, bool can_read, auto_close_ = auto_close; } -UnixFileStream::~UnixFileStream() { Close(); } +UnixFileStream::~UnixFileStream() { + if (auto_close_ && file_descriptor_ >= 0) { + if (::close(file_descriptor_) == -1) { + // We are in destructor, so we can not throw. + CRU_LOG_WARN(u"Failed to close file descriptor {}, errno {}.", + file_descriptor_, errno); + } + } +} bool UnixFileStream::CanSeek() { CheckClosed(); |