Before commit 1d10b44, it crashed. Since then, it returns NULL, with a FIXME comment. The FIXME is valid: code that assumes QObject * can't be null exists. I'm not aware of a way to feed this problematic return value to code that actually chokes on null in the current code, but the next few commits will create one.
Commit 481b002 solved a very similar problem by introducing a special null QObject. Use it here, and drop the FIXME. Update the test accordingly. Signed-off-by: Markus Armbruster <arm...@redhat.com> --- qapi/qmp-output-visitor.c | 3 +-- tests/test-qmp-output-visitor.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/qapi/qmp-output-visitor.c b/qapi/qmp-output-visitor.c index efc19d5..2d6083e 100644 --- a/qapi/qmp-output-visitor.c +++ b/qapi/qmp-output-visitor.c @@ -66,9 +66,8 @@ static QObject *qmp_output_first(QmpOutputVisitor *qov) { QStackEntry *e = QTAILQ_LAST(&qov->stack, QStack); - /* FIXME - find a better way to deal with NULL values */ if (!e) { - return NULL; + return qnull(); } return e->value; diff --git a/tests/test-qmp-output-visitor.c b/tests/test-qmp-output-visitor.c index 338ada0..256bffd 100644 --- a/tests/test-qmp-output-visitor.c +++ b/tests/test-qmp-output-visitor.c @@ -485,7 +485,7 @@ static void test_visitor_out_empty(TestOutputVisitorData *data, QObject *arg; arg = qmp_output_get_qobject(data->qov); - g_assert(!arg); + g_assert(qobject_type(arg) == QTYPE_QNULL); } static void init_native_list(UserDefNativeListUnion *cvalue) -- 2.4.3