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); inputStream.seekg(4 * 4, ios_base::cur);
size = reader.readUInt32BE(); size = reader.readUInt32BE();
CHECK_MAX_SIZE(size); CHECK_MAX_SIZE(size);
auto data = make_unique<char[]>(size); if(size) {
inputStream.read(data.get(), size); auto data = make_unique<char[]>(size);
m_value.assignData(move(data), size, TagDataType::Picture); 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()); picture.parse(*m_istream, header.dataSize());
coverField.setTypeInfo(picture.pictureType()); coverField.setTypeInfo(picture.pictureType());
// add the cover to the Vorbis comment if(coverField.value().isEmpty()) {
if(!m_vorbisComment) { addNotification(NotificationType::Warning, "\"METADATA_BLOCK_PICTURE\" contains no picture.", context);
// create one if none exists yet } else {
m_vorbisComment = make_unique<VorbisComment>(); // add the cover to the Vorbis comment
m_vorbisComment->setVendor(TagValue(APP_NAME " v" APP_VERSION, TagTextEncoding::Utf8)); 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 &) { } catch(const TruncatedDataException &) {
addNotification(NotificationType::Critical, "\"METADATA_BLOCK_PICTURE\" is truncated and will be ignored.", context); addNotification(NotificationType::Critical, "\"METADATA_BLOCK_PICTURE\" is truncated and will be ignored.", context);