@@ -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)
Set the description/value of all matching properties for a given name. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> --- qom/object.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-)