Preserve String Length When Pushing String Temporary Containing Null Char #345
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.
I was running some demo / example code, and serializing protobuf data. I noticed that sometimes, when the payload data contained byte
\0
, the subscriber would fail to parse.This difference can easily be seen by comparing the bytes received when doing these two approaches
Upon further investigation, I saw that the handling of
Bytes
object construction differed depending on construction from temporary stringstd::string&&
and string refstd::string&
. It appears that we are converting here to char* without preserving the length of the original string, which causes the remaining bytes including the first\0
to be lost.