Classify a NUL inside a string of json_view as a control character

json::parse ends the input at a NUL only between values (where it does
at all); inside a string, a NUL is a control character that must be
escaped. The view reported it as a missing closing quote. (Only the
error code differed: the exception comes from the library parser.)

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
Niels Lohmann
2026-09-29 04:19:43 +02:00
parent 12fc0a3672
commit 8f2bcb4ac9
2 changed files with 14 additions and 4 deletions

View File

@@ -263,10 +263,8 @@ class builder
}
if (c != '\\')
{
if (NulIsEnd && c == 0)
{
return failed(error_code::string_missing_quote, p);
}
// (a NUL before the end of the input is a control character, as
// for json::parse, also where a NUL ends the input between values)
return failed(c < 0x20 ? error_code::string_control_character : error_code::string_utf8, p);
}
++p;