summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/file_util.h28
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 }