On 09/18/2015 03:03 AM, Yang Hongyang wrote: >> Fix is simple: add this patch to your build: >> >> https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg01650.html >> >> I've rebased my git repo accordingly for now, and will post v5 later on >> (I'm still working on other improvements, and may reshuffle patches >> before actually getting to v5). >> >> git fetch git://repo.or.cz/qemu/ericb.git qapi >> http://repo.or.cz/qemu/ericb.git/shortlog/refs/heads/qapi > > I have to add a workaround in my previous netfilter v9 patchset(v10 and > later > changed to QOM, so it won't have the problem) to get flat union work. > Seems that > you have already fixed it.
Rather, Zoltán found it, and I just realized why it was important. Your
alternative is a bit simpler in implementation, though.
>
> diff --git a/qapi/opts-visitor.c b/qapi/opts-visitor.c
> index 7ae33b3..1271fab 100644
> --- a/qapi/opts-visitor.c
> +++ b/qapi/opts-visitor.c
> @@ -186,6 +186,20 @@ opts_end_struct(Visitor *v, Error **errp)
> }
>
>
> +static void opts_start_implicit_struct(Visitor *v, void **obj,
> + size_t size, Error **errp)
> +{
> + if (obj) {
> + *obj = g_malloc0(size);
> + }
> +}
> +
> +
> +static void opts_end_implicit_struct(Visitor *v, Error **errp)
> +{
> +}
> +
> +
> static GQueue *
> lookup_distinct(const OptsVisitor *ov, const char *name, Error **errp)
> {
> @@ -507,6 +521,8 @@ opts_visitor_new(const QemuOpts *opts)
>
> ov->visitor.start_struct = &opts_start_struct;
> ov->visitor.end_struct = &opts_end_struct;
> + ov->visitor.start_implicit_struct = &opts_start_implicit_struct;
> + ov->visitor.end_implicit_struct = &opts_end_implicit_struct;
>
> ov->visitor.start_list = &opts_start_list;
> ov->visitor.next_list = &opts_next_list;
>
>>
>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
