Fix setting encoding in TagValue::assignText()

* when no conversion should to be done
* also be more tolerant in TagValue::toString() when
  no encoding has been specified
This commit is contained in:
Martchus 2016-12-28 00:17:26 +01:00
parent e13263143d
commit c272ec315b
2 changed files with 3 additions and 3 deletions

View File

@ -107,7 +107,7 @@ void Mp4TagField::reparse(Mp4Atom &ilstChild)
if(find(expectedRawDataTypes.cbegin(), expectedRawDataTypes.cend(), m_parsedRawDataType) == expectedRawDataTypes.cend()) {
addNotification(NotificationType::Warning, "Unexpected data type indicator found.", context);
}
} catch(Failure &) {
} catch(const Failure &) {
// tag id is unknown, it is not possible to validate parsed data type
}
m_countryIndicator = reader.readUInt16BE();

View File

@ -401,7 +401,7 @@ void TagValue::toString(string &result, TagTextEncoding encoding) const
if(!isEmpty()) {
switch(m_type) {
case TagDataType::Text:
if(encoding == TagTextEncoding::Unspecified || encoding == dataEncoding()) {
if(encoding == TagTextEncoding::Unspecified || dataEncoding() == TagTextEncoding::Unspecified || encoding == dataEncoding()) {
result.assign(m_ptr.get(), m_size);
} else {
StringData encodedData;
@ -548,7 +548,7 @@ void TagValue::toWString(std::u16string &result, TagTextEncoding encoding) const
void TagValue::assignText(const char *text, std::size_t textSize, TagTextEncoding textEncoding, TagTextEncoding convertTo)
{
m_type = TagDataType::Text;
m_encoding = convertTo;
m_encoding = convertTo == TagTextEncoding::Unspecified ? textEncoding : convertTo;
if(textSize) {
if(convertTo == TagTextEncoding::Unspecified || textEncoding == convertTo) {
m_ptr = make_unique<char []>(m_size = textSize);