diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/file.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/file.cc b/src/file.cc index 6fe4b299..ce7a4c5e 100644 --- a/src/file.cc +++ b/src/file.cc @@ -38,6 +38,7 @@ #include "file.h" #include "util.h" #include "dcp_assert.h" +#include "compose.hpp" #include <stdio.h> using namespace dcp; @@ -51,7 +52,16 @@ File::File (boost::filesystem::path file) _data = new uint8_t[_size]; FILE* f = dcp::fopen_boost (file, "rb"); DCP_ASSERT (f); - fread (_data, 1, _size, f); + int const N = fread (_data, 1, _size, f); + if (N != _size) { + if (ferror(f)) { + fclose (f); + throw FileError (String::compose("fread error %1", errno), file, errno); + } else { + fclose (f); + throw FileError ("unexpected short read", file, -1); + } + } fclose (f); } |
