]> granicus.if.org Git - taglib/commitdiff
Avoid writing an empty ID3v2 tag in an AIFF file.
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Mon, 30 Nov 2015 04:42:25 +0000 (13:42 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Mon, 30 Nov 2015 04:42:25 +0000 (13:42 +0900)
taglib/riff/aiff/aifffile.cpp
tests/test_aiff.cpp

index c5c7f881bfce2ef488005b667e474ff13e67d760..57131d47f86458e76c653b514f4c59e7be581d29 100644 (file)
@@ -117,9 +117,12 @@ bool RIFF::AIFF::File::save()
 
   removeChunk("ID3 ");
   removeChunk("id3 ");
+  d->hasID3v2 = false;
 
-  setChunkData("ID3 ", d->tag->render());
-  d->hasID3v2 = true;
+  if(tag() && !tag()->isEmpty()) {
+    setChunkData("ID3 ", d->tag->render());
+    d->hasID3v2 = true;
+  }
 
   return true;
 }
index 830b6787abffcbd5a84eedc45661c98870af933e..b0204a2d01c3322fe2135f88fc520c3091512de9 100644 (file)
@@ -64,14 +64,23 @@ public:
     {
       RIFF::AIFF::File f(newname.c_str());
       CPPUNIT_ASSERT(!f.hasID3v2Tag());
+
       f.tag()->setTitle(L"TitleXXX");
       f.save();
+      CPPUNIT_ASSERT(f.hasID3v2Tag());
     }
-
     {
       RIFF::AIFF::File f(newname.c_str());
       CPPUNIT_ASSERT(f.hasID3v2Tag());
       CPPUNIT_ASSERT_EQUAL(String(L"TitleXXX"), f.tag()->title());
+
+      f.tag()->setTitle("");
+      f.save();
+      CPPUNIT_ASSERT(!f.hasID3v2Tag());
+    }
+    {
+      RIFF::AIFF::File f(newname.c_str());
+      CPPUNIT_ASSERT(!f.hasID3v2Tag());
     }
   }