On Raspberry Pi Zero 2W, compiling in Release mode introduced an issue where trying to call vehicle->subscribe->getValue crashed the program on TOPIC_ALTITUDE_BAROMETER and TOPIC_ALTITUDE_FUSIONED.
These issues appeared to be caused by the dereference of a reinterpret_cast call, specifically when the destination type was float32_t. A safer approach would be to use memcpy 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.
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.