[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 20/36] qdev: Reuse object_property_add_static() when adding array
From: |
Eduardo Habkost |
Subject: |
[PATCH 20/36] qdev: Reuse object_property_add_static() when adding array elements |
Date: |
Thu, 29 Oct 2020 18:02:30 -0400 |
Reuse function instead of calling object_property_add() directly.
We need to hack ObjectProperty.release to make sure we will free
the array property.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org
---
hw/core/qdev-properties.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 1f06dfb5d5..4fec9cb73b 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -600,7 +600,6 @@ static ArrayElementProperty *array_element_new(Object *obj,
{
char *propname = g_strdup_printf("%s[%d]", arrayname, index);
ArrayElementProperty *arrayprop = g_new0(ArrayElementProperty, 1);
- arrayprop->release = array_len_prop->arrayinfo->release;
arrayprop->propname = propname;
arrayprop->prop.info = array_len_prop->arrayinfo;
arrayprop->prop.name = propname;
@@ -632,12 +631,12 @@ static void object_property_add_array_element(Object *obj,
Property *array_len_prop,
ArrayElementProperty *prop)
{
- object_property_add(obj, prop->prop.name,
- prop->prop.info->name,
- static_prop_getter(prop->prop.info),
- static_prop_setter(prop->prop.info),
- array_element_release,
- prop);
+ ObjectProperty *op = object_property_add_static(obj, &prop->prop);
+
+ assert((void *)prop == (void *)&prop->prop);
+ prop->release = op->release;
+ /* array_element_release() will call the original release function */
+ op->release = array_element_release;
}
static void set_prop_arraylen(Object *obj, Visitor *v, const char *name,
--
2.28.0
- [PATCH 15/36] qdev: Make PropertyInfo.create return ObjectProperty*, (continued)
- [PATCH 20/36] qdev: Reuse object_property_add_static() when adding array elements,
Eduardo Habkost <=
- [PATCH 21/36] qom: Add allow_set callback to ObjectProperty, Eduardo Habkost, 2020/10/29
- [PATCH 14/36] qdev: Move dev->realized check to qdev_property_set(), Eduardo Habkost, 2020/10/29
- [PATCH 18/36] qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen(), Eduardo Habkost, 2020/10/29
- [PATCH 22/36] qdev: Make qdev_prop_allow_set() a property allow_set callback, Eduardo Habkost, 2020/10/29