Fix mavlink bug caused by implicit declarations of channel status and channel buffer getters #83
+33
−1
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.
This PR fixes a segmentation fault occurring in
mavlink_finalize_message_bufferfunction. The crash was caused by the compiler implicitly declaringmavlink_get_channel_statusas returning a 32-bit int instead of a 64-bit pointer.When
mavlink_helpers.hattempted to resolve the channel status via theMAVLINK_GET_CHANNEL_STATUSmacro, it received a truncated address. On 64-bit systems, this resulted in a garbage pointer (e.g.,0x555594e0instead of0x5555555594e0), leading to a memory access violation when dereferencingstatus->flags.This used to work on systems where the size of the pointer type is equal to the size of the int type, and it wasn't caught by the compiler because the MAVLink headers are marked as
SYSTEM_PUBLICinCMakeLists.txt.