diff options
author | Jeroen Vermeulen <jtv@precisiontranslationtools.com> | 2015-06-13 17:31:53 +0300 |
---|---|---|
committer | Jeroen Vermeulen <jtv@precisiontranslationtools.com> | 2015-06-13 17:31:53 +0300 |
commit | bd86ceffbe6d748a863e15def2443150ca360b38 (patch) | |
tree | f9d6df59636c26a0584d7182271621614668ce9b /moses/gzfilebuf.h | |
parent | 166bf7365f02cf573265d7aded822f0d08215de0 (diff) |
Check for error when opening gzfilebuf.
This replaces a segfault when a file can't be found with an exception.
Not as helpful as it could be yet, but certainly better than just
crashing.
Also, make InputFileStream constructor from path "explicit" to avoid
mistakes.
Diffstat (limited to 'moses/gzfilebuf.h')
-rw-r--r-- | moses/gzfilebuf.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/moses/gzfilebuf.h b/moses/gzfilebuf.h index 2376c2875..c82092933 100644 --- a/moses/gzfilebuf.h +++ b/moses/gzfilebuf.h @@ -1,6 +1,7 @@ #ifndef moses_gzfile_buf_h #define moses_gzfile_buf_h +#include <stdexcept> #include <streambuf> #include <zlib.h> #include <cstring> @@ -13,6 +14,8 @@ class gzfilebuf : public std::streambuf public: gzfilebuf(const char *filename) { _gzf = gzopen(filename, "rb"); + if (!_gzf) + throw std::runtime_error("Could not open " + std::string(filename) + "."); setg (_buff+sizeof(int), // beginning of putback area _buff+sizeof(int), // read position _buff+sizeof(int)); // end position |