Fixing issue with union padding serialization #15
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the
CommonAPI::SomeIP::OutputStream
class, there is a bug in thewriteValue(...)
overload for serializing aVariant
.Essentially, in the case where it has to pad the serialized union because it has to have a fixed length, i.e.
unionLengthWidth == 0
, the call to_writeValue(const uint32_t &_value, const uint8_t &_width)
for adding the padding is incorrect because it passes in the number of bits to be serialized (8
) forwidth
when it should be passing in the number of bytes to be serialized (1
), which is what the function is expecting. This causes the function to not add any padding because8
is an invalid input for thewidth
parameter. This PR changes the8
to1
. An alternative would be to use one of theuint8_t
overloads of_writeValue(...)
instead of theuint32_t
overload.