- MMS: changed handling of variable sized bit strings (now also accepts bit strings of larger size, ignoring the bits that exceed the specified size)

pull/277/head
Michael Zillgith 5 years ago
parent 1bd6efaf05
commit fb383abfb2

@ -138,11 +138,9 @@ MmsVariableSpecification_isValueOfType(MmsVariableSpecification* self, MmsValue*
if (self->typeSpec.bitString == value->value.bitString.size)
return true;
if (self->typeSpec.bitString < 0) {
if (value->value.bitString.size <= (-self->typeSpec.bitString))
if (self->typeSpec.bitString < 0)
return true;
}
}
else if (self->type == MMS_FLOAT) {
if ((self->typeSpec.floatingpoint.exponentWidth == value->value.floatingPoint.exponentWidth) &&
(self->typeSpec.floatingpoint.formatWidth == value->value.floatingPoint.formatWidth))

@ -258,10 +258,11 @@ MmsValue_update(MmsValue* self, const MmsValue* update)
case MMS_BIT_STRING:
if (self->value.bitString.size == update->value.bitString.size)
memcpy(self->value.bitString.buf, update->value.bitString.buf, bitStringByteSize(self));
else if (update->value.bitString.size < self->value.bitString.size) {
else if (update->value.bitString.size != self->value.bitString.size) {
int i;
for (i = 0; i < update->value.bitString.size; i++) {
if (i < self->value.bitString.size)
MmsValue_setBitStringBit(self, i, MmsValue_getBitStringBit(update, i));
}
}

Loading…
Cancel
Save