Merge pull request #967 from lioncash/sign

file_util: Avoid sign-conversions in WriteArray() and ReadArray()
This commit is contained in:
bunnei 2018-08-07 22:37:00 -04:00 committed by GitHub
commit 80cfd88e4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,7 @@
#include <cstdio> #include <cstdio>
#include <fstream> #include <fstream>
#include <functional> #include <functional>
#include <limits>
#include <string> #include <string>
#include <string_view> #include <string_view>
#include <type_traits> #include <type_traits>
@ -210,8 +211,9 @@ public:
static_assert(std::is_trivially_copyable<T>(), static_assert(std::is_trivially_copyable<T>(),
"Given array does not consist of trivially copyable objects"); "Given array does not consist of trivially copyable objects");
if (!IsOpen()) if (!IsOpen()) {
return -1; return std::numeric_limits<size_t>::max();
}
return std::fread(data, sizeof(T), length, m_file); return std::fread(data, sizeof(T), length, m_file);
} }
@ -220,8 +222,10 @@ public:
size_t WriteArray(const T* data, size_t length) { size_t WriteArray(const T* data, size_t length) {
static_assert(std::is_trivially_copyable<T>(), static_assert(std::is_trivially_copyable<T>(),
"Given array does not consist of trivially copyable objects"); "Given array does not consist of trivially copyable objects");
if (!IsOpen()) if (!IsOpen()) {
return -1; return std::numeric_limits<size_t>::max();
}
return std::fwrite(data, sizeof(T), length, m_file); return std::fwrite(data, sizeof(T), length, m_file);
} }