Improved detection of iostream's eof() condition

This commit is contained in:
John Wiegley 2012-05-14 21:37:36 -06:00
parent 32eaa03469
commit 9617266905
2 changed files with 4 additions and 2 deletions

View file

@ -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);

View file

@ -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()) {