Eric Blake <ebl...@redhat.com> writes: > 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?
No idea what happened. Correction: insert "calls" after "happily": prop_get_fdt() misuses the visitor API: when fdt is null, it doesn't visit anything. object_property_get_qobject() happily calls object_property_get_qobject(). Amazingly, the latter survives the misuse. Turns out we've papered over it long before prop_get_fdt() existed, in commit 1d10b44. >> 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 <arm...@redhat.com> >> --- >> 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. Some callers pass a third argument, some don't. We'll have to audit all visitor users anyway. We can decide whether and what to do about this issue then. > Reviewed-by: Eric Blake <ebl...@redhat.com> Thanks for your quick review! >> + if (!err) { >> + visit_end_struct(v, &err); >> + } >> + error_propagate(errp, err); >> return; >> } >> >>