On 12/03/2015 09:37 AM, Markus Armbruster wrote: > prop_get_fdt() misuses the visitor API: when fdt is null, it doesn't > visit anything. object_property_get_qobject() happily > object_property_get_qobject(). Amazingly, the latter survives the
Something got lost or otherwise corrupted in that sentence. Were you
trying to say one function happily calls another? If so, which of the
two "object_property_get_qobject()" strings should be changed, to what?
> misuse. Turns out we've papered over it long before prop_get_fdt()
> existed, in commit 1d10b44.
>
> However, commit 6c2f9a1 changed how we paper over it, and as a side
> effect changed qom-get's value from {} to null. Change it right back
> by fixing the visitor misuse.
>
> Signed-off-by: Markus Armbruster <[email protected]>
> ---
> hw/ppc/spapr_drc.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
> index 4e7a1d3..dad157f 100644
> --- a/hw/ppc/spapr_drc.c
> +++ b/hw/ppc/spapr_drc.c
> @@ -259,6 +259,11 @@ static void prop_get_fdt(Object *obj, Visitor *v, void
> *opaque,
> void *fdt;
>
> if (!drc->fdt) {
> + visit_start_struct(v, NULL, NULL, name, 0, &err);
visit_start_struct(v, NULL, "fdt", name, 0, &err)
would give a nicer error message, but only if there were an error
message to give. As already mentioned on 1/3, we are only using this
for output visitors which don't raise errors (in fact, &error_abort
would do, rather than worrying about error propagation).
But I'm fine with the patch as you proposed it, once the commit message
is fixed.
Reviewed-by: Eric Blake <[email protected]>
> + if (!err) {
> + visit_end_struct(v, &err);
> + }
> + error_propagate(errp, err);
> return;
> }
>
>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
