tag/Set: do AlbumArtist/Artist fallback only if AlbumArtist is not disabled

On "list albumartist", songs that have no AlbumArtist tag will use the
Artist tag.  However, if AlbumArtist is disabled via
"metadata_to_use", the TagBuilder::AddItem() call is ignored, and
PrintUniqueTag() attempts to print a nullptr string.

This commit fixes the problem by attempting the fallback only if
AlbumArtist is not disabled.
This commit is contained in:
Max Kellermann 2014-11-08 19:25:01 +01:00
parent cbf79769d3
commit b5ba94f1de
2 changed files with 4 additions and 0 deletions

2
NEWS
View File

@ -1,4 +1,6 @@
ver 0.19.3 (not yet released)
* protocol
- fix "(null)" result string to "list" when AlbumArtist is disabled
* database
- upnp: fix breakage due to malformed URIs
* decoder

View File

@ -19,6 +19,7 @@
#include "Set.hxx"
#include "TagBuilder.hxx"
#include "TagSettings.h"
#include <assert.h>
@ -109,6 +110,7 @@ TagSet::InsertUnique(const Tag &tag,
if (!CheckUnique(type, tag, type, group_mask) &&
(type != TAG_ALBUM_ARTIST ||
ignore_tag_items[TAG_ALBUM_ARTIST] ||
/* fall back to "Artist" if no "AlbumArtist" was found */
!CheckUnique(type, tag, TAG_ARTIST, group_mask)))
InsertUnique(tag, type, nullptr, group_mask);