[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 23/58] json: Report first rather than last parse
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH v3 23/58] json: Report first rather than last parse error |
Date: |
Thu, 23 Aug 2018 18:39:50 +0200 |
Quiz time! When a parser reports multiple errors, but the user gets
to see just one, which one is (on average) the least useful one?
Yes, you're right, it's the last one! You're clearly familiar with
compilers.
Which one does QEMU report?
Right again, the last one! You're clearly familiar with QEMU.
Reproducer: feeding
{"abc\xC2ijk": 1}\n
to QMP produces
{"error": {"class": "GenericError", "desc": "JSON parse error, key is not a
string in object"}}
Report the first error instead. The reproducer now produces
{"error": {"class": "GenericError", "desc": "JSON parse error, invalid
UTF-8 sequence in string"}}
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
---
qobject/json-parser.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index 0e232ff101..b77931614b 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -54,13 +54,13 @@ static void GCC_FMT_ATTR(3, 4)
parse_error(JSONParserContext *ctxt,
{
va_list ap;
char message[1024];
+
+ if (ctxt->err) {
+ return;
+ }
va_start(ap, msg);
vsnprintf(message, sizeof(message), msg, ap);
va_end(ap);
- if (ctxt->err) {
- error_free(ctxt->err);
- ctxt->err = NULL;
- }
error_setg(&ctxt->err, "JSON parse error, %s", message);
}
--
2.17.1
- [Qemu-devel] [PATCH v3 25/58] json: Accept overlong \xC0\x80 as U+0000 ("modified UTF-8"), (continued)
- [Qemu-devel] [PATCH v3 25/58] json: Accept overlong \xC0\x80 as U+0000 ("modified UTF-8"), Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 04/58] check-qjson: Cover whitespace more thoroughly, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 13/58] check-qjson: Simplify utf8_string(), Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 32/58] json-parser: simplify and avoid JSONParserContext allocation, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 30/58] check-qjson: Fix and enable utf8_string()'s disabled part, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 08/58] check-qjson: Cover escaped characters more thoroughly, part 1, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 07/58] test-qga: Clean up how we test QGA synchronization, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 15/58] check-qjson qmp-test: Cover control characters more thoroughly, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 24/58] json: Leave rejecting invalid UTF-8 to parser, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 05/58] qmp-cmd-test: Split off qmp-test, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 23/58] json: Report first rather than last parse error,
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 14/58] check-qjson: Fix utf8_string() to test all invalid sequences, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 11/58] check-qjson: Consolidate partly redundant string tests, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 01/58] docs/interop/qmp-spec: How to force known good parser state, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 20/58] json: Tighten and simplify qstring_from_escaped_str()'s loop, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 09/58] check-qjson: Streamline escaped_string()'s test strings, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 02/58] check-qjson: Cover multiple JSON objects in same string, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 03/58] check-qjson: Cover blank and lexically erroneous input, Markus Armbruster, 2018/08/23
- [Qemu-devel] [PATCH v3 06/58] qmp-test: Cover syntax and lexical errors, Markus Armbruster, 2018/08/23