fix(string): fix deserialization of string with default value #37
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.
If I have a struct with a
std::string
in it that has a default value, e.g.And I want to serialize an instance of that struct such as:
It will serialize properly, containing only the length byte and the bytes for
"custom_value"
.However, when I deserialize it I will get a struct which contains a string:
"default_valuecustom_value"
This is because the deserialization creates a default instance of the struct (using
T()
), and then the stringfrom_bytes(...)
does avalue += character
for each byte in the stream.This PR fixes that by clearing out the string when deserializing it, so that the deserialized struct's string will only contain
"custom_value"