Fix saving of ID3v1 tags to TrueAudio files with removed ID3v2 tags.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@743541 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
Lukáš Lalinský 2007-12-01 10:08:43 +00:00
parent c4a21adb8e
commit 6cc989eb55

View File

@ -133,22 +133,28 @@ bool TrueAudio::File::save()
// Update ID3v2 tag
if(d->ID3v2Tag) {
if(d->ID3v2Tag && !d->ID3v2Tag->isEmpty()) {
if(!d->hasID3v2) {
d->ID3v2Location = 0;
d->ID3v2OriginalSize = 0;
}
insert(d->ID3v2Tag->render(), d->ID3v2Location, d->ID3v2OriginalSize);
ByteVector data = d->ID3v2Tag->render();
insert(data, d->ID3v2Location, d->ID3v2OriginalSize);
d->ID3v1Location -= d->ID3v2OriginalSize - data.size();
d->ID3v2OriginalSize = data.size();
d->hasID3v2 = true;
}
else if(d->hasID3v2) {
removeBlock(d->ID3v2Location, d->ID3v2OriginalSize);
d->ID3v1Location -= d->ID3v2OriginalSize;
d->ID3v2Location = -1;
d->ID3v2OriginalSize = 0;
d->hasID3v2 = false;
}
// Update ID3v1 tag
if(d->ID3v1Tag) {
if(d->ID3v1Tag && !d->ID3v1Tag->isEmpty()) {
if(!d->hasID3v1) {
seek(0, End);
d->ID3v1Location = tell();
@ -160,6 +166,7 @@ bool TrueAudio::File::save()
}
else if(d->hasID3v1) {
removeBlock(d->ID3v1Location, 128);
d->ID3v1Location = -1;
d->hasID3v1 = false;
}