replace dangerous dereference of reinterpret_cast with memcpy #934
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.
On Raspberry Pi Zero 2W, compiling in Release mode introduced an issue where trying to call
vehicle->subscribe->getValue
crashed the program onTOPIC_ALTITUDE_BAROMETER
andTOPIC_ALTITUDE_FUSIONED
.These issues appeared to be caused by the dereference of a
reinterpret_cast
call, specifically when the destination type wasfloat32_t
. A safer approach would be to usememcpy
to simply grab the bytes from the buffer and copy them into a new stack variable. The Telemetry messages are so small that a single copy will not produce any significant performance penalty.If, for some reason,
reinterpret_cast
is necessary, I'd love to know why that is and how I can get around the program crash when compiling with optimization.