mirror of
https://github.com/taglib/taglib.git
synced 2025-06-04 01:28:21 -04:00
Merge branch 'master' into merge-master-to-taglib2
# Conflicts: # taglib/ogg/oggfile.cpp
This commit is contained in:
commit
b972f24193
1
NEWS
1
NEWS
@ -15,6 +15,7 @@
|
||||
* Better handling of broken MPEG audio frames.
|
||||
* Fixed crash when calling File::properties() after strip().
|
||||
* Fixed crash when parsing certain MPEG files.
|
||||
* Fixed crash when saving Ogg files.
|
||||
* Fixed possible file corruptions when saving ASF files.
|
||||
* Fixed possible file corruptions when saving FLAC files.
|
||||
* Fixed possible file corruptions when saving MP4 files.
|
||||
|
@ -271,30 +271,14 @@ void Ogg::File::writePacket(unsigned int i, const ByteVector &packet)
|
||||
|
||||
// Write the pages.
|
||||
|
||||
ByteVector data;
|
||||
for(it = pages.begin(); it != pages.end(); ++it)
|
||||
data.append((*it)->render());
|
||||
|
||||
const long long originalOffset = firstPage->fileOffset();
|
||||
const long long originalLength = lastPage->fileOffset() + lastPage->size() - originalOffset;
|
||||
|
||||
long long writtenLength = 0;
|
||||
|
||||
for(it = pages.begin(); it != pages.end(); ++it) {
|
||||
const ByteVector data = (*it)->render();
|
||||
|
||||
size_t replace;
|
||||
|
||||
if(writtenLength + data.size() <= originalLength)
|
||||
replace = data.size();
|
||||
else if(writtenLength <= originalLength)
|
||||
replace = static_cast<size_t>(originalLength - writtenLength);
|
||||
else
|
||||
replace = 0;
|
||||
|
||||
insert(data, originalOffset + writtenLength, replace);
|
||||
|
||||
writtenLength += data.size();
|
||||
}
|
||||
|
||||
if(writtenLength < originalLength)
|
||||
removeBlock(originalOffset + writtenLength, static_cast<size_t>(originalLength - writtenLength));
|
||||
insert(data, originalOffset, static_cast<size_t>(originalLength));
|
||||
|
||||
// Renumber the following pages if the pages have been split or merged.
|
||||
|
||||
@ -302,7 +286,7 @@ void Ogg::File::writePacket(unsigned int i, const ByteVector &packet)
|
||||
= pages.back()->pageSequenceNumber() - lastPage->pageSequenceNumber();
|
||||
|
||||
if(numberOfNewPages != 0) {
|
||||
long long pageOffset = originalOffset + writtenLength;
|
||||
long long pageOffset = originalOffset + data.size();
|
||||
|
||||
while(true) {
|
||||
Page page(this, pageOffset);
|
||||
|
Loading…
x
Reference in New Issue
Block a user