Hi On Wed, Oct 22, 2025 at 2:15 PM Markus Armbruster <[email protected]> wrote: > > Simpler (more so after the next commit), and no risk of truncation > because the caller's buffer is too small. Performance doesn't matter; > the method is only used for "info qdev". > > Signed-off-by: Markus Armbruster <[email protected]> > --- > include/hw/qdev-properties.h | 2 +- > hw/core/qdev-properties-system.c | 7 +++---- > hw/core/qdev-properties.c | 9 ++++----- > 3 files changed, 8 insertions(+), 10 deletions(-) > > diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h > index 0197aa4995..60b8133009 100644 > --- a/include/hw/qdev-properties.h > +++ b/include/hw/qdev-properties.h > @@ -34,7 +34,7 @@ struct PropertyInfo { > const char *description; > const QEnumLookup *enum_table; > bool realized_set_allowed; /* allow setting property on realized device > */ > - int (*print)(Object *obj, const Property *prop, char *dest, size_t len); > + char *(*print)(Object *obj, const Property *prop); > void (*set_default_value)(ObjectProperty *op, const Property *prop); > ObjectProperty *(*create)(ObjectClass *oc, const char *name, > const Property *prop); > diff --git a/hw/core/qdev-properties-system.c > b/hw/core/qdev-properties-system.c > index 1f810b7ddf..4e1afaac82 100644 > --- a/hw/core/qdev-properties-system.c > +++ b/hw/core/qdev-properties-system.c > @@ -865,15 +865,14 @@ out: > visit_end_alternate(v, (void **) &alt); > } > > -static int print_pci_devfn(Object *obj, const Property *prop, char *dest, > - size_t len) > +static char *print_pci_devfn(Object *obj, const Property *prop) > { > int32_t *ptr = object_field_prop_ptr(obj, prop); > > if (*ptr == -1) { > - return snprintf(dest, len, "<unset>"); > + return g_strdup("<unset>"); > } else { > - return snprintf(dest, len, "%02x.%x", *ptr >> 3, *ptr & 7); > + return g_strdup_printf("%02x.%x", *ptr >> 3, *ptr & 7); > } > } > > diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c > index b7e8a89ba5..422a486969 100644 > --- a/hw/core/qdev-properties.c > +++ b/hw/core/qdev-properties.c > @@ -1117,12 +1117,11 @@ static void qdev_get_legacy_property(Object *obj, > Visitor *v, > Error **errp) > { > const Property *prop = opaque; > + char *s;
Why not g_autofree ? > > - char buffer[1024]; > - char *ptr = buffer; > - > - prop->info->print(obj, prop, buffer, sizeof(buffer)); > - visit_type_str(v, name, &ptr, errp); > + s = prop->info->print(obj, prop); > + visit_type_str(v, name, &s, errp); > + g_free(s); otherwise, Reviewed-by: Marc-André Lureau <[email protected]> > } > > /** > -- > 2.49.0 > > -- Marc-André Lureau
