Skip to content

Fix source lifetime and preserve input strings in response::IdType #256

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
May 19, 2022

Conversation

wravery
Copy link
Contributor

@wravery wravery commented May 19, 2022

Fix #254

This includes a fix for the original valgrind error, and a couple of bugs around automatically converting response::IdType strings to Base64 binaries.

I'm bumping the minor version because response::IdType in inputs/arguments is going to be a string all the time internally, and that changes which accessors you can use on field arguments. It's generally more consistent now, but if you are used to using it with Base64 encoded binaries and your code assumes that's what it contains, you may need to perform the conversion explicitly with argId.release<response::IdType::ByteData>() rather than using the const ByteData accessors. You can still use response::IdType::isBase64() to tell if it's safe to release it as a binary (otherwise it will throw an exception for strings which are not valid Base64 encodings), and it's always safe to release it as a string. It's also always safe to use the const c_str() OpaqueString accessor on response::IdType field arguments now because they are guaranteed to hold a string internally.

The response::IdType::ByteData type is just an alias for std::vector<std::uint8_t>, which was the original type for response::IdType before I added std::string support, so you could also write the release call as argId.release<std::vector<std::uint8_t>>() if that looks better to you. The same applies to response::IdType::OpaqueString vs. std::string.

@wravery wravery merged commit 8d2afea into microsoft:main May 19, 2022
@wravery wravery deleted the fix-source-lifetime branch May 19, 2022 19:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Valgrind detected an invalid read
1 participant