[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [PATCH 1/3] qapi: add visit_start_union and visit_end_
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-stable] [PATCH 1/3] qapi: add visit_start_union and visit_end_union |
Date: |
Fri, 12 Sep 2014 18:29:46 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
Il 12/09/2014 18:17, Michael Roth ha scritto:
> Quoting Paolo Bonzini (2014-09-12 10:39:49)
>> Il 12/09/2014 17:34, Michael Roth ha scritto:
>>>
>>> { 'union': 'UserDefUnion',
>>> 'base': 'UserDefZero',
>>> 'data': { 'a' : 'int', 'b' : 'UserDefB' } }
>>>
>>> If UserDefUnion.a is 0, UserDefUnion.data will cast it to a NULL value and
>>> cause the output visitor to bail, when really it should just be left to
>>> continue on serializing the integer.
>>
>> In the case of dealloc, that'd be okay because the dealloc visit would
>> do nothing for KIND_A, right?
>
> Yup that should be fine for the dealloc visitor. With this series we never
> actually visit the int in this case though due to this quirk. But that's
> okay because it's not an allocated type and the dealloc visitor doesn't need
> to do anything anyway. (It's a bit wonky, but since that reliance on
> implementation details now lives in the visitor implementation of
> visit_start_union it's reasonably contained at least)
>
> But if we're looking at extending visit_start_union for use in something like
> an output visitor, this would need to be addressed some other way, since
> skipping scalar fields because they're 0 is a bug there.
I guess it would be something like
has_data = (kind < KIND_MAX) && (is_scalar[kind] || !!data)
That could be done in qapi-visit.py if we were so inclined...
Paolo
[Qemu-stable] [PATCH 2/3] qapi: dealloc visitor, implement visit_start_union, Michael Roth, 2014/09/11
[Qemu-stable] [PATCH 3/3] tests: add QMP input visitor test for unions with no discriminator, Michael Roth, 2014/09/11
[Qemu-stable] [PATCH 4/3] qemu-iotests: Test missing "driver" key for blockdev-add, Fam Zheng, 2014/09/11
Re: [Qemu-stable] [PATCH 0/3] qapi: fix crash in dealloc visitor for union types, Fam Zheng, 2014/09/11