Avoid adding empty values when setting values and field does not exist

This commit is contained in:
Martchus 2021-12-31 01:14:58 +01:00
parent 9ca4c57c0e
commit 532a805254
2 changed files with 7 additions and 3 deletions

View File

@ -226,7 +226,9 @@ bool FieldMapBasedTag<ImplementationType>::internallySetValues(const FieldMapBas
}
// add remaining specified values (there are more specified values than existing ones)
for (; valuesIterator != values.cend(); ++valuesIterator) {
m_fields.insert(std::make_pair(id, FieldType(id, *valuesIterator)));
if (!valuesIterator->isEmpty()) {
m_fields.insert(std::make_pair(id, FieldType(id, *valuesIterator)));
}
}
// remove remaining existing values (there are more existing values than specified ones)
for (; range.first != range.second; ++range.first) {

View File

@ -278,8 +278,10 @@ bool Mp4Tag::setValues(KnownField field, const std::vector<TagValue> &values)
}
}
for (; valuesIterator != values.cend(); ++valuesIterator) {
fields().emplace(std::piecewise_construct, std::forward_as_tuple(Mp4TagAtomIds::Extended),
std::forward_as_tuple(extendedId.mean, extendedId.name, *valuesIterator));
if (valuesIterator->isEmpty()) {
fields().emplace(std::piecewise_construct, std::forward_as_tuple(Mp4TagAtomIds::Extended),
std::forward_as_tuple(extendedId.mean, extendedId.name, *valuesIterator));
}
}
for (; range.first != range.second; ++range.first) {
range.first->second.clearValue();