diff --git a/src/json.hpp b/src/json.hpp index bcec446a..e07aaa8c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -198,7 +198,6 @@ json.exception.parse_error.107 | parse error: JSON pointer must be empty or begi json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. -json.exception.parse_error.111 | parse error: bad input stream | Parsing CBOR or MessagePack from an input stream where the [`badbit` or `failbit`](http://en.cppreference.com/w/cpp/io/ios_base/iostate) is set. json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xf8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. @@ -7498,7 +7497,6 @@ class basic_json @throw parse_error.101 in case of an unexpected token @throw parse_error.102 if to_unicode fails or surrogate error @throw parse_error.103 if to_unicode fails - @throw parse_error.111 if input stream is in a bad state @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. The complexity can be higher if the parser callback function @@ -7697,7 +7695,6 @@ class basic_json @throw parse_error.101 in case of an unexpected token @throw parse_error.102 if to_unicode fails or surrogate error @throw parse_error.103 if to_unicode fails - @throw parse_error.111 if input stream is in a bad state @complexity Linear in the length of the input. The parser is a predictive LL(1) parser. @@ -8864,12 +8861,6 @@ class basic_json cached_input_stream_adapter(std::istream& i) : is(i), start_position(is.tellg()) { - // immediately abort if stream is erroneous - if (JSON_UNLIKELY(i.fail())) - { - JSON_THROW(parse_error::create(111, 0, "bad input stream")); - } - fill_buffer(); // skip byte order mark @@ -9429,7 +9420,7 @@ class basic_json } else { - val = mant == 0 + val = (mant == 0) ? std::numeric_limits::infinity() : std::numeric_limits::quiet_NaN(); } diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index e91163c7..f59fef1d 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -581,7 +581,7 @@ TEST_CASE("regression tests") { std::ifstream f("file_not_found.json"); CHECK_THROWS_AS(json::parse(f), json::parse_error&); - CHECK_THROWS_WITH(json::parse(f), "[json.exception.parse_error.111] parse error: bad input stream"); + CHECK_THROWS_WITH(json::parse(f), "[json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input; expected '[', '{', or a literal"); } SECTION("issue #367 - calling stream at EOF")