]> granicus.if.org Git - taglib/commitdiff
Create a correct footer
authorAllan Sandfeld Jensen <kde@carewolf.com>
Sun, 1 Aug 2004 23:30:06 +0000 (23:30 +0000)
committerAllan Sandfeld Jensen <kde@carewolf.com>
Sun, 1 Aug 2004 23:30:06 +0000 (23:30 +0000)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@334982 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

ape/apetag.cpp

index d1904a24ca6e4b7c6d3d2093446acf8d09d4323f..db936e2fc60a91539cfd0fa2f7cc064242b1bbfb 100644 (file)
@@ -155,6 +155,7 @@ ByteVector APE::Tag::render() const
 
   d->footer.setItemCount(itemCount);
   d->footer.setTagSize(data.size()+Footer::size());
+  d->footer.setHeaderPresent(true);
 
   return d->footer.renderHeader() + data + d->footer.renderFooter();
 }
@@ -276,9 +277,8 @@ void APE::Tag::addValue(const String &key, const String &value, bool replace)
   if(replace)
     removeItem(key);
   if(!value.isEmpty()) {
-    Map<const String, Item>::Iterator it = d->itemListMap.find(key.upper());
-    if(it != d->itemListMap.end())
-      d->itemListMap[key].value.append(value);
+    if(d->itemListMap.contains(key) || !replace)
+      d->itemListMap[key.upper()].value.append(value);
     else
       setItem(key, Item(value));
   }
@@ -286,7 +286,7 @@ void APE::Tag::addValue(const String &key, const String &value, bool replace)
 
 void APE::Tag::setItem(const String &key, const Item &item)
 {
-  d->itemListMap.insert(key, item);
+  d->itemListMap.insert(key.upper(), item);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -317,15 +317,14 @@ void APE::Tag::parse(const ByteVector &data, uint count)
     uint valueLength = data.mid(pos + 0, 4).toUInt(false);
     uint flags = data.mid(pos + 4, 4).toUInt(false);
     String key = String(data.mid(pos + 8), String::UTF8);
-    key = key.upper();
     APE::Item item;
 
     if(flags < 4 ) {
       ByteVector val = data.mid(pos + 8 + key.size() + 1, valueLength);
-      d->itemListMap.insert(key, Item(parseAPEString(val)));
+      d->itemListMap.insert(key.upper(), Item(parseAPEString(val)));
     }
     else
-      d->binaries.insert(key, data.mid(pos, 8 + key.size() + 1 + valueLength));
+      d->binaries.insert(key.upper(), data.mid(pos, 8 + key.size() + 1 + valueLength));
 
     pos += 8 + key.size() + 1 + valueLength;
     count--;