Clear current values of a field before assigning a new one via setValues()

Some tag fields allow to store additional values or other data related to
the value. It likely doesn't make much sense to keep the this data when
setting a new value.
This commit is contained in:
Martchus 2021-01-30 19:15:41 +01:00
parent 7692eec9af
commit 5629a808be
1 changed files with 4 additions and 2 deletions

View File

@ -218,7 +218,9 @@ bool FieldMapBasedTag<ImplementationType>::internallySetValues(const FieldMapBas
for (; valuesIterator != values.cend() && range.first != range.second; ++valuesIterator) {
// replace existing value with non-empty specified value
if (!valuesIterator->isEmpty()) {
range.first->second.setValue(*valuesIterator);
auto &field = range.first->second;
field.clearValue();
field.setValue(*valuesIterator);
++range.first;
}
}
@ -228,7 +230,7 @@ bool FieldMapBasedTag<ImplementationType>::internallySetValues(const FieldMapBas
}
// remove remaining existing values (there are more existing values than specified ones)
for (; range.first != range.second; ++range.first) {
range.first->second.setValue(TagValue());
range.first->second.clearValue();
}
return true;
}