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, ...) const char *fmt, ...)
{ {
va_list args; va_list args;
int n = 0, res; char *value;
size_t size = 0; int res;
char *p = NULL;
va_start(args, fmt); va_start(args, fmt);
n = vsnprintf(p, size, fmt, args); res = vasprintf(&value, fmt, args);
va_end(args); va_end(args);
if (n < 0) if (res < 0)
return -errno; return -errno;
size = (size_t) n + 1; res = pw_impl_metadata_set_property(metadata, subject, key, type, value);
p = malloc(size); free(value);
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);
return res; return res;
} }