Philippe Mathieu-Daudé <phi...@linaro.org> writes: > ForeachArgs::name is only used once as TYPE_IPMI_BMC. > Since the penultimate commit, object_child_foreach_recursive()'s > handler takes an Error* argument and return a boolean. > We can directly pass ForeachArgs::obj as context, removing the > ForeachArgs structure. > > Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> > --- > RFC: please double-check... > > hw/ppc/pnv_bmc.c | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-) > > diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c > index 05acc88a55..566284469f 100644 > --- a/hw/ppc/pnv_bmc.c > +++ b/hw/ppc/pnv_bmc.c > @@ -278,36 +278,29 @@ IPMIBmc *pnv_bmc_create(PnvPnor *pnor) > return IPMI_BMC(obj); > } > > -typedef struct ForeachArgs { > - const char *name; > - Object *obj; > -} ForeachArgs; > - > static bool bmc_find(Object *child, void *opaque, Error **errp) > { > - ForeachArgs *args = opaque; > + Object **obj = opaque; > > - if (object_dynamic_cast(child, args->name)) { > - if (args->obj) { > - return false; > + if (object_dynamic_cast(child, TYPE_IPMI_BMC)) { > + if (*obj) { > + return true;
Looks like you're changing return false to return true. Intendional? > } > - args->obj = child; > + *obj = child; > } > return true; > } > > IPMIBmc *pnv_bmc_find(Error **errp) > { > - ForeachArgs args = { TYPE_IPMI_BMC, NULL }; > - int ret; > + Object *obj = NULL; > > - ret = object_child_foreach_recursive(object_get_root(), bmc_find, > - &args, NULL); > - if (ret) { > + if (!object_child_foreach_recursive(object_get_root(), bmc_find, &obj, > + NULL)) { > error_setg(errp, "machine should have only one BMC device. " > "Use '-nodefaults'"); > return NULL; > } > > - return args.obj ? IPMI_BMC(args.obj) : NULL; > + return IPMI_BMC(obj); > }