Warn about empty METADATA_BLOCK_PICTURE

This commit is contained in:
Martchus 2016-11-19 14:33:06 +01:00
parent eb2d3bb54a
commit d7ca2a0cd4
2 changed files with 17 additions and 9 deletions

View File

@ -96,9 +96,13 @@ void FlacMetaDataBlockPicture::parse(istream &inputStream, uint32 maxSize)
inputStream.seekg(4 * 4, ios_base::cur);
size = reader.readUInt32BE();
CHECK_MAX_SIZE(size);
auto data = make_unique<char[]>(size);
inputStream.read(data.get(), size);
m_value.assignData(move(data), size, TagDataType::Picture);
if(size) {
auto data = make_unique<char[]>(size);
inputStream.read(data.get(), size);
m_value.assignData(move(data), size, TagDataType::Picture);
} else {
m_value.clearData();
}
}
/*!

View File

@ -127,13 +127,17 @@ void FlacStream::internalParseHeader()
picture.parse(*m_istream, header.dataSize());
coverField.setTypeInfo(picture.pictureType());
// add the cover to the Vorbis comment
if(!m_vorbisComment) {
// create one if none exists yet
m_vorbisComment = make_unique<VorbisComment>();
m_vorbisComment->setVendor(TagValue(APP_NAME " v" APP_VERSION, TagTextEncoding::Utf8));
if(coverField.value().isEmpty()) {
addNotification(NotificationType::Warning, "\"METADATA_BLOCK_PICTURE\" contains no picture.", context);
} else {
// add the cover to the Vorbis comment
if(!m_vorbisComment) {
// create one if none exists yet
m_vorbisComment = make_unique<VorbisComment>();
m_vorbisComment->setVendor(TagValue(APP_NAME " v" APP_VERSION, TagTextEncoding::Utf8));
}
m_vorbisComment->fields().insert(make_pair(coverField.id(), move(coverField)));
}
m_vorbisComment->fields().insert(make_pair(coverField.id(), move(coverField)));
} catch(const TruncatedDataException &) {
addNotification(NotificationType::Critical, "\"METADATA_BLOCK_PICTURE\" is truncated and will be ignored.", context);