corrected termination of NTS
This commit is contained in:
@@ -645,6 +645,7 @@ result_t StringDataField::readSymbols(SymbolString& input, const unsigned char b
|
||||
size_t start = 0, count = m_length;
|
||||
int incr = 1;
|
||||
unsigned char ch, last = 0, hour = 0;
|
||||
bool terminated = false;
|
||||
if (count==REMAIN_LEN && input.size()>baseOffset) {
|
||||
count = input.size()-baseOffset;
|
||||
} else if (baseOffset + count > input.size()) {
|
||||
@@ -725,7 +726,9 @@ result_t StringDataField::readSymbols(SymbolString& input, const unsigned char b
|
||||
default:
|
||||
if (ch < 0x20)
|
||||
ch = (unsigned char)m_dataType.replacement;
|
||||
if (ch != 0x00)
|
||||
if (ch == 0x00)
|
||||
terminated = true;
|
||||
else if (!terminated)
|
||||
output << setw(0) << dec << static_cast<char>(ch);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ int main()
|
||||
{"x,,nts:10", "Hallo, Du", "10fe07000a48616c6c6f2c20447500", "00", ""},
|
||||
{"x,,nts:10", " ", "10fe07000a20202020202020202020", "00", ""},
|
||||
{"x,,nts:10", "", "10fe07000a00000000000000000000", "00", ""},
|
||||
{"x,,nts:10", "abc", "10fe07000a6162630065666768696a", "00", "W"},
|
||||
{"x,,nts:11", "", "10fe07000a20202020202020202020", "00", "rW"},
|
||||
{"x,,nts:24", "abcdefghijklmnopqrstuvwx", "10fe0700186162636465666768696a6b6c6d6e6f707172737475767778", "00", ""},
|
||||
{"x,,nts:*", "abcde", "10fe0700056162636465", "00", "W"},
|
||||
|
||||
Reference in New Issue
Block a user