Fix issue #88 by changing the behavior of setProperties().

For file types that support multiple tag standards (for example, FLAC
files can have ID3v1, ID3v2, and Vorbis comments) setProperties is now
called for all existing tags instead of only for the most recommended
one.
This fixes the problem that under some circumstances it was not possible
to delete a value using setProperties() because upon save() the call to
Tag::duplicate recovered that value from the ID3v1 tag.
This commit is contained in:
Michael Helmling
2012-12-10 20:56:16 +01:00
parent d5cf6d72e2
commit c0ca5c97d5
6 changed files with 41 additions and 41 deletions

View File

@ -119,12 +119,12 @@ PropertyMap WavPack::File::properties() const
PropertyMap WavPack::File::setProperties(const PropertyMap &properties)
{
if(d->hasAPE)
return d->tag.access<APE::Tag>(WavAPEIndex, false)->setProperties(properties);
else if(d->hasID3v1)
return d->tag.access<ID3v1::Tag>(WavID3v1Index, false)->setProperties(properties);
else
return d->tag.access<APE::Tag>(APE, true)->setProperties(properties);
PropertyMap result;
if(d->hasID3v1)
result = d->tag.access<ID3v1::Tag>(WavID3v1Index, false)->setProperties(properties);
if(d->hasAPE || !d->hasID3v1)
result = d->tag.access<APE::Tag>(WavAPEIndex, true)->setProperties(properties);
return result;
}
WavPack::Properties *WavPack::File::audioProperties() const