diff options
Diffstat (limited to 'qapi')
-rw-r--r-- | qapi/qmp-input-visitor.c | 8 | ||||
-rw-r--r-- | qapi/qmp-output-visitor.c | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/qapi/qmp-input-visitor.c b/qapi/qmp-input-visitor.c index fa460a3c37..30e7cb38f2 100644 --- a/qapi/qmp-input-visitor.c +++ b/qapi/qmp-input-visitor.c @@ -342,7 +342,13 @@ static void qmp_input_type_any(Visitor *v, const char *name, QObject **obj, static void qmp_input_type_null(Visitor *v, const char *name, Error **errp) { - abort(); + QmpInputVisitor *qiv = to_qiv(v); + QObject *qobj = qmp_input_get_object(qiv, name, true); + + if (qobject_type(qobj) != QTYPE_QNULL) { + error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", + "null"); + } } static void qmp_input_optional(Visitor *v, const char *name, bool *present) diff --git a/qapi/qmp-output-visitor.c b/qapi/qmp-output-visitor.c index adf7731e3f..5681ad3471 100644 --- a/qapi/qmp-output-visitor.c +++ b/qapi/qmp-output-visitor.c @@ -198,7 +198,8 @@ static void qmp_output_type_any(Visitor *v, const char *name, QObject **obj, static void qmp_output_type_null(Visitor *v, const char *name, Error **errp) { - abort(); + QmpOutputVisitor *qov = to_qov(v); + qmp_output_add_obj(qov, name, qnull()); } /* Finish building, and return the root object. Will not be NULL. */ |