diff options
author | John Wiegley <johnw@newartisans.com> | 2012-05-14 21:37:36 -0600 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2012-05-14 21:41:38 -0600 |
commit | 96172669053bbba7263a370f109f70615049a0c6 (patch) | |
tree | e3e0a0d6bb7bec06505965da4e845e12bbc63971 | |
parent | 32eaa0346959188a030cd217ec02b02040efeb26 (diff) | |
download | fork-ledger-96172669053bbba7263a370f109f70615049a0c6.tar.gz fork-ledger-96172669053bbba7263a370f109f70615049a0c6.tar.bz2 fork-ledger-96172669053bbba7263a370f109f70615049a0c6.zip |
Improved detection of iostream's eof() condition
-rw-r--r-- | src/csv.cc | 2 | ||||
-rw-r--r-- | src/token.cc | 4 |
2 files changed, 4 insertions, 2 deletions
@@ -87,7 +87,7 @@ char * csv_reader::next_line(std::istream& in) while (in.good() && ! in.eof() && in.peek() == '#') in.getline(context.linebuf, parse_context_t::MAX_LINE); - if (! in.good() || in.eof()) + if (! in.good() || in.eof() || in.peek() == -1) return NULL; in.getline(context.linebuf, parse_context_t::MAX_LINE); diff --git a/src/token.cc b/src/token.cc index afe48b08..1392c29f 100644 --- a/src/token.cc +++ b/src/token.cc @@ -148,7 +148,7 @@ void expr_t::token_t::next(std::istream& in, const parse_flags_t& pflags) char c = peek_next_nonws(in); - if (in.eof()) { + if (in.eof() || c == -1) { kind = TOK_EOF; return; } @@ -426,6 +426,8 @@ void expr_t::token_t::next(std::istream& in, const parse_flags_t& pflags) expected('\0', c); parse_ident(in); + } else { + throw_(parse_error, _("Unexpected EOF")); } if (! value.is_string() || value.as_string().empty()) { |