diff --git a/picojson.h b/picojson.h index 76742fe..b6c4e19 100644 --- a/picojson.h +++ b/picojson.h @@ -1132,7 +1132,12 @@ inline std::string parse(value &out, const std::string &s) { inline std::string parse(value &out, std::istream &is) { std::string err; - parse(out, std::istreambuf_iterator(is.rdbuf()), std::istreambuf_iterator(), &err); + const auto &beg = std::istreambuf_iterator(is.rdbuf()); + const auto &end = std::istreambuf_iterator(); + parse(out, beg, end, &err); + if (beg == end) { + is.setstate(std::ios_base::eofbit); + } return err; }