file_util: Add static assertions to ReadBytes() and WriteBytes()

Ensure that the actual types being passed in are trivially copyable. The internal
call to ReadArray() and WriteArray() will always succeed, since they're passed a pointer to char*
which is always trivially copyable.
This commit is contained in:
Lioncash 2018-04-29 18:18:39 -04:00
parent 869075867b
commit 40d2dcabd7
No known key found for this signature in database
GPG Key ID: 4E3C3CC1031BA9C7

View File

@ -202,11 +202,15 @@ public:
return items_written; return items_written;
} }
size_t ReadBytes(void* data, size_t length) { template <typename T>
size_t ReadBytes(T* data, size_t length) {
static_assert(std::is_trivially_copyable<T>(), "T must be trivially copyable");
return ReadArray(reinterpret_cast<char*>(data), length); return ReadArray(reinterpret_cast<char*>(data), length);
} }
size_t WriteBytes(const void* data, size_t length) { template <typename T>
size_t WriteBytes(const T* data, size_t length) {
static_assert(std::is_trivially_copyable<T>(), "T must be trivially copyable");
return WriteArray(reinterpret_cast<const char*>(data), length); return WriteArray(reinterpret_cast<const char*>(data), length);
} }