On 4/29/25 10:03 AM, marcandre.lur...@redhat.com wrote:
From: Marc-André Lureau <marcandre.lur...@redhat.com>
Fix a memory leak, and allow it to be called multiple times safely.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
---
hw/core/qdev-properties.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index bad111833c..7a53c85887 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -620,15 +620,16 @@ static void release_prop_array(Object *obj, const char
*name, void *opaque)
char *elem = *arrayptr;
int i;
- if (!prop->arrayinfo->release) {
- return;
+ if (prop->arrayinfo->release) {
+ for (i = 0; i < *alenptr; i++) {
+ Property elem_prop = array_elem_prop(obj, prop, name, elem);
+ prop->arrayinfo->release(obj, NULL, &elem_prop);
+ elem += prop->arrayfieldsize;
+ }
}
- for (i = 0; i < *alenptr; i++) {
- Property elem_prop = array_elem_prop(obj, prop, name, elem);
- prop->arrayinfo->release(obj, NULL, &elem_prop);
- elem += prop->arrayfieldsize;
- }
+ *alenptr = 0;
+ g_clear_pointer(arrayptr, g_free);
}
/*
Reviewed-by: Stefan Berger <stef...@linux.ibm.com>