[PATCH 1/6] qdev: make release_string() idempotent

marcandre.lureau@redhat.com posted 6 patches 6 months, 2 weeks ago
Maintainers: Stefan Berger <stefanb@linux.vnet.ibm.com>, Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>
[PATCH 1/6] qdev: make release_string() idempotent
Posted by marcandre.lureau@redhat.com 6 months, 2 weeks ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

So it can eventually be called multiple times safely.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/core/qdev-properties.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 147b3ffd16..bad111833c 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -484,7 +484,8 @@ const PropertyInfo qdev_prop_usize = {
 static void release_string(Object *obj, const char *name, void *opaque)
 {
     const Property *prop = opaque;
-    g_free(*(char **)object_field_prop_ptr(obj, prop));
+
+    g_clear_pointer((char **)object_field_prop_ptr(obj, prop), g_free);
 }
 
 static void get_string(Object *obj, Visitor *v, const char *name,
-- 
2.49.0


Re: [PATCH 1/6] qdev: make release_string() idempotent
Posted by Stefan Berger 6 months, 2 weeks ago

On 4/29/25 10:03 AM, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> So it can eventually be called multiple times safely.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   hw/core/qdev-properties.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
> index 147b3ffd16..bad111833c 100644
> --- a/hw/core/qdev-properties.c
> +++ b/hw/core/qdev-properties.c
> @@ -484,7 +484,8 @@ const PropertyInfo qdev_prop_usize = {
>   static void release_string(Object *obj, const char *name, void *opaque)
>   {
>       const Property *prop = opaque;
> -    g_free(*(char **)object_field_prop_ptr(obj, prop));
> +
> +    g_clear_pointer((char **)object_field_prop_ptr(obj, prop), g_free);
>   }
>   
>   static void get_string(Object *obj, Visitor *v, const char *name,

Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>