Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Vermeulen <jtv@precisiontranslationtools.com>2015-06-13 17:31:53 +0300
committerJeroen Vermeulen <jtv@precisiontranslationtools.com>2015-06-13 17:31:53 +0300
commitbd86ceffbe6d748a863e15def2443150ca360b38 (patch)
treef9d6df59636c26a0584d7182271621614668ce9b /moses/gzfilebuf.h
parent166bf7365f02cf573265d7aded822f0d08215de0 (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.h3
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