diff --git a/taglib/riff/aiff/aifffile.cpp b/taglib/riff/aiff/aifffile.cpp index c5c7f881..57131d47 100644 --- a/taglib/riff/aiff/aifffile.cpp +++ b/taglib/riff/aiff/aifffile.cpp @@ -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; } diff --git a/tests/test_aiff.cpp b/tests/test_aiff.cpp index 830b6787..b0204a2d 100644 --- a/tests/test_aiff.cpp +++ b/tests/test_aiff.cpp @@ -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()); } }