[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/taglib
From:       Lukáš Lalinský <lalinsky () gmail ! com>
Date:       2010-04-02 12:14:32
Message-ID: 20100402121432.D43D3AC888 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1110209 by lalinsky:

Ignore trailing non-data atoms when parsing MP4 covr atoms

 M  +1 -1      taglib/mp4/mp4tag.cpp  
 AM            tests/data/covr-junk.m4a  
 M  +16 -0     tests/test_mp4.cpp  
 M  +5 -2      tests/utils.h  


--- trunk/kdesupport/taglib/taglib/mp4/mp4tag.cpp #1110208:1110209
@@ -209,7 +209,7 @@
     int flags = data.mid(pos + 8, 4).toUInt();
     if(name != "data") {
       debug("MP4: Unexpected atom \"" + name + "\", expecting \"data\"");
-      return;
+      break;
     }
     if(flags == MP4::CoverArt::PNG || flags == MP4::CoverArt::JPEG) {
       value.append(MP4::CoverArt(MP4::CoverArt::Format(flags),
--- trunk/kdesupport/taglib/tests/test_mp4.cpp #1110208:1110209
@@ -23,6 +23,7 @@
   CPPUNIT_TEST(testGnre);
   CPPUNIT_TEST(testCovrRead);
   CPPUNIT_TEST(testCovrWrite);
+  CPPUNIT_TEST(testCovrRead2);
   CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -157,6 +158,7 @@
   {
     MP4::File *f = new MP4::File("data/gnre.m4a");
     CPPUNIT_ASSERT_EQUAL(TagLib::String("Ska"), f->tag()->genre());
+    delete f;
   }
 
   void testCovrRead()
@@ -169,6 +171,7 @@
     CPPUNIT_ASSERT_EQUAL(TagLib::uint(79), l[0].data().size());
     CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format());
     CPPUNIT_ASSERT_EQUAL(TagLib::uint(287), l[1].data().size());
+    delete f;
   }
 
   void testCovrWrite()
@@ -197,6 +200,19 @@
     delete f;
   }
 
+  void testCovrRead2()
+  {
+    MP4::File *f = new MP4::File("data/covr-junk.m4a");
+    CPPUNIT_ASSERT(f->tag()->itemListMap().contains("covr"));
+    MP4::CoverArtList l = f->tag()->itemListMap()["covr"].toCoverArtList();
+    CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), l.size());
+    CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format());
+    CPPUNIT_ASSERT_EQUAL(TagLib::uint(79), l[0].data().size());
+    CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format());
+    CPPUNIT_ASSERT_EQUAL(TagLib::uint(287), l[1].data().size());
+    delete f;
+  }
+
 };
 
 CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4);
--- trunk/kdesupport/taglib/tests/utils.h #1110208:1110209
@@ -38,14 +38,16 @@
 class ScopedFileCopy
 {
 public:
-  ScopedFileCopy(const string &filename, const string &ext)
+  ScopedFileCopy(const string &filename, const string &ext, bool deleteFile=true)
   {
+    m_deleteFile = deleteFile;
     m_filename = copyFile(filename, ext);
   }
 
   ~ScopedFileCopy()
   {
-    deleteFile(m_filename);
+    if(m_deleteFile)
+      deleteFile(m_filename);
   }
 
   string fileName()
@@ -54,5 +56,6 @@
   }
 
 private:
+  bool m_deleteFile;
   string m_filename;
 };
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic