allow less than 8 bits for non-numeric types as well, corrected TTQ/TTH decoding

This commit is contained in:
john30
2017-03-19 14:26:49 +01:00
parent 3f974e9b47
commit b88922fb40
3 changed files with 15 additions and 4 deletions
+10 -4
View File
@@ -515,12 +515,18 @@ size_t SingleDataField::getLength(PartType partType, size_t maxLength) {
}
bool SingleDataField::hasFullByteOffset(bool after) {
if (m_length > 1 || !m_dataType->isNumeric()) {
if (m_length > 1) {
return true;
}
NumberDataType* num = reinterpret_cast<NumberDataType*>(m_dataType);
return (num->getBitCount() % 8) == 0
|| (after && num->getFirstBit() + (num->getBitCount() % 8) >= 8);
int16_t firstBit;
if (m_dataType->isNumeric()) {
NumberDataType* num = reinterpret_cast<NumberDataType*>(m_dataType);
firstBit = num->getFirstBit();
} else {
firstBit = 0;
}
return (m_dataType->getBitCount() % 8) == 0
|| (after && firstBit + (m_dataType->getBitCount() % 8) >= 8);
}