diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/file_util.h | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/common/file_util.h b/src/common/file_util.h index fdae5c9c8..8efff4958 100644 --- a/src/common/file_util.h +++ b/src/common/file_util.h | |||
| @@ -151,29 +151,41 @@ public: | |||
| 151 | bool Close(); | 151 | bool Close(); |
| 152 | 152 | ||
| 153 | template <typename T> | 153 | template <typename T> |
| 154 | bool ReadArray(T* data, size_t length) | 154 | size_t ReadArray(T* data, size_t length) |
| 155 | { | 155 | { |
| 156 | if (!IsOpen() || length != std::fread(data, sizeof(T), length, m_file)) | 156 | if (!IsOpen()) { |
| 157 | m_good = false; | 157 | m_good = false; |
| 158 | return -1; | ||
| 159 | } | ||
| 158 | 160 | ||
| 159 | return m_good; | 161 | size_t items_read = std::fread(data, sizeof(T), length, m_file); |
| 162 | if (items_read != length) | ||
| 163 | m_good = false; | ||
| 164 | |||
| 165 | return items_read; | ||
| 160 | } | 166 | } |
| 161 | 167 | ||
| 162 | template <typename T> | 168 | template <typename T> |
| 163 | bool WriteArray(const T* data, size_t length) | 169 | size_t WriteArray(const T* data, size_t length) |
| 164 | { | 170 | { |
| 165 | if (!IsOpen() || length != std::fwrite(data, sizeof(T), length, m_file)) | 171 | if (!IsOpen()) { |
| 172 | m_good = false; | ||
| 173 | return -1; | ||
| 174 | } | ||
| 175 | |||
| 176 | size_t items_written = std::fwrite(data, sizeof(T), length, m_file); | ||
| 177 | if (items_written != length) | ||
| 166 | m_good = false; | 178 | m_good = false; |
| 167 | 179 | ||
| 168 | return m_good; | 180 | return items_written; |
| 169 | } | 181 | } |
| 170 | 182 | ||
| 171 | bool ReadBytes(void* data, size_t length) | 183 | size_t ReadBytes(void* data, size_t length) |
| 172 | { | 184 | { |
| 173 | return ReadArray(reinterpret_cast<char*>(data), length); | 185 | return ReadArray(reinterpret_cast<char*>(data), length); |
| 174 | } | 186 | } |
| 175 | 187 | ||
| 176 | bool WriteBytes(const void* data, size_t length) | 188 | size_t WriteBytes(const void* data, size_t length) |
| 177 | { | 189 | { |
| 178 | return WriteArray(reinterpret_cast<const char*>(data), length); | 190 | return WriteArray(reinterpret_cast<const char*>(data), length); |
| 179 | } | 191 | } |