[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 23/35] qmp: Tighten output visitor rules
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v8 23/35] qmp: Tighten output visitor rules |
Date: |
Wed, 6 Jan 2016 15:18:50 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 |
On 01/05/2016 07:05 AM, Marc-André Lureau wrote:
> Hi
>
> On Mon, Dec 21, 2015 at 6:08 PM, Eric Blake <address@hidden> wrote:
>> Add a new qmp_output_visitor_reset(), which must be called before
>> reusing an exising QmpOutputVisitor on a new root object. Tighten
>> assertions to require that qmp_output_get_qobject() can only be
>> called after pairing a visit_end_* for every visit_start_* (rather
>> than allowing it to return a partially built object), that it must
>> not be called unless at least one visit_type_* or visit_start/
>> visit_end pair has occurred since creation/reset (the accidental
>> return of NULL fixed by commit ab8bf1d7 would have been much
>> easier to diagnose), and that it may only be called once per visit.
>>
>> To keep the semantics of test_visitor_out_empty, we now have to
>> explicitly request a top-level visit of a NULL object, by
>> implementing the just-added visitor type_null() callback.
>>
>> Signed-off-by: Eric Blake <address@hidden>
>>
>> -void qmp_output_visitor_cleanup(QmpOutputVisitor *v)
>> +void qmp_output_visitor_reset(QmpOutputVisitor *v)
>> {
>> QStackEntry *e, *tmp;
>>
>> @@ -231,6 +235,12 @@ void qmp_output_visitor_cleanup(QmpOutputVisitor *v)
>> }
>>
>> qobject_decref(v->root);
>> + v->root = NULL;
>> +}
>> +
>> +void qmp_output_visitor_cleanup(QmpOutputVisitor *v)
>
> It would make sense to call it _free() imho..
Pre-existing name, so a cleanup should be in a separate patch.
>> @@ -459,6 +460,7 @@ static void test_visitor_out_empty(TestOutputVisitorData
>> *data,
>> {
>> QObject *arg;
>>
>> + visit_type_null(data->ov, NULL, &error_abort);
>
> I guess this is going to be used outside of just this artificial case.
> Otherwise, I would have suggested to get rid of it.
Used in 24/35 (in fact, it was discussion on that topic just before 2.5
that prompted me to even add visit_type_null()).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature