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 <armbru@redhat.com>
Link: https://lore.kernel.org/r/20251022101420.36059-2-armbru@redhat.com
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
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);
}
}
Error **errp)
{
const Property *prop = opaque;
+ char *s;
- 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);
}
/**
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);