This will make the function more convenient to use, and allow us to reuse it for array element properties.
I'm not adding a version of this function that doesn't copy the struct, because this function isn't supposed to be used widely. Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> --- This is a new patch added in v3 of the series. --- Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: "Daniel P. Berrangé" <berra...@redhat.com> Cc: Eduardo Habkost <ehabk...@redhat.com> Cc: qemu-devel@nongnu.org --- hw/core/qdev-properties.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index d5773ffd8a..451bb54cf6 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -828,21 +828,23 @@ object_property_add_field(Object *obj, const char *name, ObjectPropertyAllowSet allow_set) { ObjectProperty *op; + Property *newprop = g_new0(Property, 1); assert(allow_set); assert(!prop->info->create); - op = object_property_add(obj, name, prop->info->name, - field_prop_getter(prop->info), - field_prop_setter(prop->info), - prop->info->release, - prop); + *newprop = *prop; + op = object_property_add(obj, name, newprop->info->name, + field_prop_getter(newprop->info), + field_prop_setter(newprop->info), + static_prop_release_dynamic_prop, + newprop); object_property_set_description(obj, name, - prop->info->description); + newprop->info->description); - if (prop->set_default) { - prop->info->set_default_value(op, prop); + if (newprop->set_default) { + newprop->info->set_default_value(op, newprop); if (op->init) { op->init(obj, op); } -- 2.28.0