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.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/zencore/iobuffer.cpp b/src/zencore/iobuffer.cpp
index c47c54981..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);
}
}