From 5629a808be74869ba899fed5db33ee845bcdf60c Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 30 Jan 2021 19:15:41 +0100 Subject: [PATCH] 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. --- fieldbasedtag.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fieldbasedtag.h b/fieldbasedtag.h index cbda291..39faea7 100644 --- a/fieldbasedtag.h +++ b/fieldbasedtag.h @@ -218,7 +218,9 @@ bool FieldMapBasedTag::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::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; }