pipewire: impl-metadata: replace open-coded vasprintf()

Simply use `vasprintf()` instead of manual `vsnprintf()` and `malloc()` calls.
This commit is contained in:
Barnabás Pőcze 2023-06-23 22:43:09 +02:00
parent 3506b7534c
commit 2efccb3d01

View file

@ -577,31 +577,17 @@ int pw_impl_metadata_set_propertyf(struct pw_impl_metadata *metadata,
const char *fmt, ...)
{
va_list args;
int n = 0, res;
size_t size = 0;
char *p = NULL;
char *value;
int res;
va_start(args, fmt);
n = vsnprintf(p, size, fmt, args);
res = vasprintf(&value, fmt, args);
va_end(args);
if (n < 0)
if (res < 0)
return -errno;
size = (size_t) n + 1;
p = malloc(size);
if (p == NULL)
return -errno;
va_start(args, fmt);
n = vsnprintf(p, size, fmt, args);
va_end(args);
if (n < 0) {
free(p);
return -errno;
}
res = pw_impl_metadata_set_property(metadata, subject, key, type, p);
free(p);
res = pw_impl_metadata_set_property(metadata, subject, key, type, value);
free(value);
return res;
}