aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/iobuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zencore/iobuffer.cpp')
-rw-r--r--src/zencore/iobuffer.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/zencore/iobuffer.cpp b/src/zencore/iobuffer.cpp
index 1c31d6620..529afe341 100644
--- a/src/zencore/iobuffer.cpp
+++ b/src/zencore/iobuffer.cpp
@@ -107,7 +107,7 @@ IoBufferCore::~IoBufferCore()
}
void
-IoBufferCore::DeleteThis() const
+IoBufferCore::DeleteThis() const noexcept
{
// We do this just to avoid paying for the cost of a vtable
if (const IoBufferExtendedCore* _ = ExtendedCore())
@@ -210,7 +210,12 @@ IoBufferExtendedCore::~IoBufferExtendedCore()
// Mark file for deletion when final handle is closed
FILE_DISPOSITION_INFO Fdi{.DeleteFile = TRUE};
- SetFileInformationByHandle(m_FileHandle, FileDispositionInfo, &Fdi, sizeof Fdi);
+ if (!SetFileInformationByHandle(m_FileHandle, FileDispositionInfo, &Fdi, sizeof Fdi))
+ {
+ ZEN_WARN("SetFileInformationByHandle(DeleteOnClose) failed for file handle {}, reason '{}'",
+ m_FileHandle,
+ GetLastErrorAsString());
+ }
#else
std::error_code Ec;
std::filesystem::path FilePath = zen::PathFromHandle(m_FileHandle, Ec);
@@ -447,7 +452,7 @@ GetNullBufferCore()
return Core;
}
-RefPtr<IoBufferCore> IoBuffer::NullBufferCore(GetNullBufferCore());
+Ref<IoBufferCore> IoBuffer::NullBufferCore(GetNullBufferCore());
IoBuffer::IoBuffer(size_t InSize) : m_Core(new IoBufferCore(InSize))
{
@@ -475,7 +480,7 @@ IoBuffer::IoBuffer(const IoBuffer& OuterBuffer, size_t Offset, size_t Size)
}
else
{
- m_Core = new IoBufferCore(OuterBuffer.m_Core, reinterpret_cast<const uint8_t*>(OuterBuffer.Data()) + Offset, Size);
+ m_Core = new IoBufferCore(OuterBuffer.m_Core.Get(), reinterpret_cast<const uint8_t*>(OuterBuffer.Data()) + Offset, Size);
}
}
@@ -719,6 +724,8 @@ iobuffer_forcelink()
{
}
+TEST_SUITE_BEGIN("core.iobuffer");
+
TEST_CASE("IoBuffer")
{
zen::IoBuffer buffer1;
@@ -756,6 +763,8 @@ TEST_CASE("IoBuffer.mmap")
# endif
}
+TEST_SUITE_END();
+
#endif
} // namespace zen