Browse Source
It can possible kill someone
Signed-off-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
pull/3278/head
Caio Oliveira
4 weeks ago
No known key found for this signature in database
GPG Key ID: AAAE6C7FD4186B0C
2 changed files with
12 additions and
0 deletions
-
src/common/fs/file.cpp
-
src/common/fs/file.h
|
|
|
@ -403,7 +403,11 @@ void IOFile::Open(const fs::path& path, FileAccessMode mode, FileType type, File |
|
|
|
} |
|
|
|
|
|
|
|
void IOFile::Close() { |
|
|
|
#if defined(__APPLE__)
|
|
|
|
// NO IMPLEMENTATION YET
|
|
|
|
#else
|
|
|
|
PlatformUnmap(*this); |
|
|
|
#endif
|
|
|
|
if (file) { |
|
|
|
errno = 0; |
|
|
|
const auto close_result = std::fclose(file) == 0; |
|
|
|
|
|
|
|
@ -322,7 +322,11 @@ public: |
|
|
|
static_assert(!std::is_pointer_v<T>, "T must not be a pointer to an object."); |
|
|
|
if (IsMappedFile()) { |
|
|
|
std::memcpy(&object, mmap_base + mmap_offset, sizeof(T)); |
|
|
|
#ifdef _WIN32 |
|
|
|
return sizeof(T) != 0; |
|
|
|
#else |
|
|
|
return sizeof(T); |
|
|
|
#endif |
|
|
|
} |
|
|
|
return IsOpen() ? std::fread(&object, sizeof(T), 1, file) == 1 : false; |
|
|
|
} |
|
|
|
@ -348,7 +352,11 @@ public: |
|
|
|
static_assert(!std::is_pointer_v<T>, "T must not be a pointer to an object."); |
|
|
|
if (IsMappedFile()) { |
|
|
|
std::memcpy(mmap_base + mmap_offset, &object, sizeof(T)); |
|
|
|
#ifdef _WIN32 |
|
|
|
return sizeof(T) != 0; |
|
|
|
#else |
|
|
|
return sizeof(T); |
|
|
|
#endif |
|
|
|
} |
|
|
|
return IsOpen() ? std::fwrite(&object, sizeof(T), 1, file) == 1 : false; |
|
|
|
} |
|
|
|
|