Commit c26703b7 authored by Max Kellermann's avatar Max Kellermann

SongFilter: check value.empty() after checking tag fallbacks

In this new order, a filter 'AlbumArtist ""' matches only on songs which neither have `AlbumArtist` nor `Artist`.
parent db27bb76
ver 0.20.22 (not yet released)
* protocol
- add tag fallbacks for AlbumArtistSort, ArtistSort
- fix empty string filter on fallback tags
- "count group ..." can print an empty group
- fix broken command "list ... group"
* storage
......
......@@ -110,15 +110,6 @@ SongFilter::Item::Match(const Tag &_tag) const noexcept
}
if (tag < TAG_NUM_OF_ITEM_TYPES && !visited_types[tag]) {
/* If the search critieron was not visited during the
sweep through the song's tag, it means this field
is absent from the tag or empty. Thus, if the
searched string is also empty
then it's a match as well and we should return
true. */
if (value.empty())
return true;
bool result = false;
if (ApplyTagFallback(TagType(tag),
[&](TagType tag2) {
......@@ -136,6 +127,15 @@ SongFilter::Item::Match(const Tag &_tag) const noexcept
return true;
}))
return result;
/* If the search critieron was not visited during the
sweep through the song's tag, it means this field
is absent from the tag or empty. Thus, if the
searched string is also empty
then it's a match as well and we should return
true. */
if (value.empty())
return true;
}
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment