[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 22/56] json: Report first rather than last parse err
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 22/56] json: Report first rather than last parse error |
Date: |
Wed, 8 Aug 2018 14:03:00 +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>
---
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 6b60b07e09..b3a95be3c8 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 02/56] check-qjson: Cover blank and lexically erroneous input, (continued)
- [Qemu-devel] [PATCH 02/56] check-qjson: Cover blank and lexically erroneous input, Markus Armbruster, 2018/08/08
- [Qemu-devel] [PATCH 01/56] check-qjson: Cover multiple JSON objects in same string, Markus Armbruster, 2018/08/08
- [Qemu-devel] [PATCH 06/56] test-qga: Clean up how we test QGA synchronization, Markus Armbruster, 2018/08/08
- [Qemu-devel] [PATCH 14/56] check-qjson qmp-test: Cover control characters more thoroughly, Markus Armbruster, 2018/08/08
- [Qemu-devel] [PATCH 22/56] json: Report first rather than last parse error,
Markus Armbruster <=
- [Qemu-devel] [PATCH 05/56] qmp-test: Cover syntax and lexical errors, Markus Armbruster, 2018/08/08
[Qemu-devel] [PATCH 27/56] json: Reject invalid \uXXXX, fix \u0000, Markus Armbruster, 2018/08/08
[Qemu-devel] [PATCH 15/56] check-qjson: Cover interpolation more thoroughly, Markus Armbruster, 2018/08/08