From c43d2b3fc1a21ed6811b7f154459789dcf1b3429 Mon Sep 17 00:00:00 2001 From: Urs Fleisch Date: Sat, 28 Feb 2026 07:50:01 +0100 Subject: [PATCH] Avoid duplicates in StringList Matroska::Tag::complexPropertyKeys() When using for example examples/tagwriter -C GENRE \ "name=GENRE,targetTypeValue=50,value=Soft Rock;name=GENRE,targetTypeValue=50,value=Classic Rock" \ path/to/file.mka the GENRE key was included twice and tagreader displayed the two genre tags twice. --- taglib/matroska/matroskatag.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/taglib/matroska/matroskatag.cpp b/taglib/matroska/matroskatag.cpp index 699a2596..f305fb28 100644 --- a/taglib/matroska/matroskatag.cpp +++ b/taglib/matroska/matroskatag.cpp @@ -551,10 +551,11 @@ StringList Matroska::Tag::complexPropertyKeys() const { StringList keys; for(const SimpleTag &t : std::as_const(d->tags)) { - if(t.type() != SimpleTag::StringType || - t.trackUid() != 0 || t.editionUid() != 0 || - t.chapterUid() != 0 || t.attachmentUid() != 0 || - translateTag(t.name(), t.targetTypeValue()).isEmpty()) { + if((t.type() != SimpleTag::StringType || + t.trackUid() != 0 || t.editionUid() != 0 || + t.chapterUid() != 0 || t.attachmentUid() != 0 || + translateTag(t.name(), t.targetTypeValue()).isEmpty()) && + !keys.contains(t.name())) { keys.append(t.name()); } }