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); } /* -- 2.49.0