mirror of
https://github.com/taglib/taglib.git
synced 2025-07-18 13:04:18 -04:00
Make it possible to strip tags without deleting them (again). This is
used by MPEG::File::save() so that tags that aren't explicitly saves still exist in memory. git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@332783 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
@ -289,7 +289,7 @@ bool MPEG::File::save(int tags)
|
||||
insert(d->ID3v2Tag->render(), d->ID3v2Location, d->ID3v2OriginalSize);
|
||||
}
|
||||
else
|
||||
success = strip(ID3v2) && success;
|
||||
success = strip(ID3v2, false) && success;
|
||||
}
|
||||
else if(d->hasID3v2)
|
||||
success = strip(ID3v2) && success;
|
||||
@ -304,7 +304,7 @@ bool MPEG::File::save(int tags)
|
||||
success = strip(ID3v1) && success;
|
||||
}
|
||||
else if(d->hasID3v1)
|
||||
success = strip(ID3v1) && success;
|
||||
success = strip(ID3v1, false) && success;
|
||||
|
||||
return success;
|
||||
}
|
||||
@ -332,6 +332,11 @@ ID3v1::Tag *MPEG::File::ID3v1Tag(bool create)
|
||||
}
|
||||
|
||||
bool MPEG::File::strip(int tags)
|
||||
{
|
||||
return strip(tags, true);
|
||||
}
|
||||
|
||||
bool MPEG::File::strip(int tags, bool freeMemory)
|
||||
{
|
||||
if(readOnly()) {
|
||||
debug("MPEG::File::strip() - Cannot strip tags from a read only file.");
|
||||
@ -343,8 +348,10 @@ bool MPEG::File::strip(int tags)
|
||||
d->ID3v2Location = -1;
|
||||
d->ID3v2OriginalSize = 0;
|
||||
d->hasID3v2 = false;
|
||||
delete d->ID3v2Tag;
|
||||
d->ID3v2Tag = 0;
|
||||
if(freeMemory) {
|
||||
delete d->ID3v2Tag;
|
||||
d->ID3v2Tag = 0;
|
||||
}
|
||||
|
||||
// v1 tag location has changed, update if it exists
|
||||
if(d->ID3v1Tag)
|
||||
@ -355,8 +362,10 @@ bool MPEG::File::strip(int tags)
|
||||
truncate(d->ID3v1Location);
|
||||
d->ID3v1Location = -1;
|
||||
d->hasID3v1 = false;
|
||||
delete d->ID3v1Tag;
|
||||
d->ID3v1Tag = 0;
|
||||
if(freeMemory) {
|
||||
delete d->ID3v1Tag;
|
||||
d->ID3v1Tag = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user