[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 07/38] json-parser: always set an error if return
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v3 07/38] json-parser: always set an error if return NULL |
Date: |
Mon, 26 Mar 2018 17:08:45 +0200 |
Let's make json_parser_parse_err() suck less, and simplify caller
error handling.
Signed-off-by: Marc-André Lureau <address@hidden>
---
monitor.c | 4 ----
qobject/json-parser.c | 7 ++++++-
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/monitor.c b/monitor.c
index 5889a32231..e9d0c4d172 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4053,10 +4053,6 @@ static void handle_qmp_command(JSONMessageParser
*parser, GQueue *tokens)
QMPRequest *req_obj;
req = json_parser_parse_err(tokens, NULL, &err);
- if (!req && !err) {
- /* json_parser_parse_err() sucks: can fail without setting @err */
- error_setg(&err, QERR_JSON_PARSING);
- }
if (err) {
goto err;
}
diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index 769b960c9f..c39cd8e4d7 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -591,7 +591,12 @@ QObject *json_parser_parse_err(GQueue *tokens, va_list
*ap, Error **errp)
result = parse_value(ctxt, ap);
- error_propagate(errp, ctxt->err);
+ if (!result && !ctxt->err) {
+ /* TODO: improve error reporting */
+ error_setg(errp, "Failed to parse JSON");
+ } else {
+ error_propagate(errp, ctxt->err);
+ }
parser_context_free(ctxt);
--
2.17.0.rc1.1.g4c4f2b46a3
- [Qemu-devel] [PATCH v3 00/38] RFC: monitor: add asynchronous command type, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 03/38] Revert "qmp: isolate responses into io thread", Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 04/38] monitor: no need to save need_resume, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 02/38] qmp-shell: learn to send commands with quoted arguments, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 01/38] HACK: add back OOB, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 06/38] monitor: no need to remove desc before replacing it, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 05/38] monitor: further simplify previous patch, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 09/38] json: remove useless return value from lexer/parser, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 08/38] json-lexer: make it safe to call multiple times, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 07/38] json-parser: always set an error if return NULL,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v3 10/38] tests: add a few qemu-qmp tests, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 13/38] qga: process_event() simplification, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 14/38] monitor: simplify monitor_qmp_respond(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 11/38] tests: change /0.15/* tests to /qmp/*, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 12/38] tests: add a qmp success-response test, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 15/38] qmp: pass and return a QDict to qmp_dispatch(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 17/38] qmp: constify qmp_is_oob(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 16/38] qmp: move 'id' copy to qmp_dispatch(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 18/38] qmp: add QmpSession, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 20/38] QmpSession: add json parser and use it in qga, Marc-André Lureau, 2018/03/26