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:
parent
e13263143d
commit
c272ec315b
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue