metadata: free item value as well

This commit is contained in:
Wim Taymans 2020-07-07 20:25:01 +02:00
parent 2ae4322cca
commit 4de3403c99

View file

@ -30,17 +30,26 @@ struct metadata_item {
char *value; char *value;
}; };
static void clear_item(struct metadata_item *it)
{
free(it->key);
free(it->type);
free(it->value);
}
void remove_all(struct global *global, uint32_t subject, const char *key) void remove_all(struct global *global, uint32_t subject, const char *key)
{ {
struct metadata_item *it; struct metadata_item *it;
for (it = pw_array_first(&global->metadata_info.metadata); for (it = pw_array_first(&global->metadata_info.metadata);
pw_array_check(&global->metadata_info.metadata, it);) { pw_array_check(&global->metadata_info.metadata, it);) {
if (it->subject == subject && if (it->subject == subject &&
(key == NULL || it->key == NULL || strcmp(key, it->key) == 0)) (key == NULL || it->key == NULL || strcmp(key, it->key) == 0)) {
clear_item(it);
pw_array_remove(&global->metadata_info.metadata, it); pw_array_remove(&global->metadata_info.metadata, it);
else } else {
it++; it++;
} }
}
} }
static struct metadata_item *find_item(struct global *global, uint32_t subject, static struct metadata_item *find_item(struct global *global, uint32_t subject,