Set the description/value of all matching properties for a given name. Signed-off-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> --- qom/object.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/qom/object.c b/qom/object.c index 79172f7..46abf41 100644 --- a/qom/object.c +++ b/qom/object.c @@ -834,14 +834,24 @@ void object_property_set(Object *obj, Visitor *v, const char *name, Error **errp) { ObjectProperty *prop = object_property_find(obj, name, errp); + Error *local_err = NULL; + if (prop == NULL) { return; } - if (!prop->set) { - error_set(errp, QERR_PERMISSION_DENIED); - } else { - prop->set(obj, v, prop->opaque, name, errp); + QTAILQ_FOREACH(prop, &obj->properties, node) { + if (strcmp(prop->name, name) == 0) { + if (!prop->set) { + error_set(&local_err, QERR_PERMISSION_DENIED); + } else { + prop->set(obj, v, prop->opaque, name, &local_err); + } + } + if (local_err) { + error_propagate(errp, local_err); + return; + } } } @@ -1797,13 +1807,12 @@ void object_property_set_description(Object *obj, const char *name, { ObjectProperty *op; - op = object_property_find(obj, name, errp); - if (!op) { - return; + QTAILQ_FOREACH(op, &obj->properties, node) { + if (strcmp(op->name, name) == 0) { + g_free(op->description); + op->description = g_strdup(description); + } } - - g_free(op->description); - op->description = g_strdup(description); } static void object_instance_init(Object *obj) -- 2.4.3.3.g905f831