]> granicus.if.org Git - taglib/commitdiff
adds new iTunes hack for v2.2 frames stored in a v2.3 tag (iTunes v8.1.1.10 for example)
authorJonathan Marshall <jmarshall@never.you.mind>
Sun, 4 Nov 2012 06:53:55 +0000 (19:53 +1300)
committerJonathan Marshall <jmarshall@never.you.mind>
Sun, 4 Nov 2012 06:54:28 +0000 (19:54 +1300)
taglib/mpeg/id3v2/id3v2framefactory.cpp

index bba2985c6d20f3f0ad8ea3f00baed550d1289e52..c7d7421453b1359376a4cf9f03679f05a4e440d7 100644 (file)
@@ -107,6 +107,17 @@ Frame *FrameFactory::createFrame(const ByteVector &origData, Header *tagHeader)
     return 0;
   }
 
+#ifndef NO_ITUNES_HACKS
+  if(version == 3 && frameID.size() == 4 && frameID[3] == '\0') {
+    // iTunes v2.3 tags store v2.2 frames - convert now
+    frameID = frameID.mid(0, 3);
+    header->setFrameID(frameID);
+    header->setVersion(2);
+    updateFrame(header);
+    header->setVersion(3);
+  }
+#endif
+
   for(ByteVector::ConstIterator it = frameID.begin(); it != frameID.end(); it++) {
     if( (*it < 'A' || *it > 'Z') && (*it < '0' || *it > '9') ) {
       delete header;