mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-31 06:41:36 +08:00
microcdr and IDL: remove field ordering, causing improper serialization/deserialization
This commit is contained in:
@@ -131,14 +131,10 @@ def add_deserialize_functions(fields, scope_name):
|
|||||||
add_deserialize_functions(children_fields, name + ('[%d].' %i))
|
add_deserialize_functions(children_fields, name + ('[%d].' %i))
|
||||||
|
|
||||||
def add_code_to_serialize():
|
def add_code_to_serialize():
|
||||||
# sort fields (using a stable sort) as in the declaration of the type
|
add_serialize_functions(spec.parsed_fields(), "")
|
||||||
sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True)
|
|
||||||
add_serialize_functions(sorted_fields, "")
|
|
||||||
|
|
||||||
def add_code_to_deserialize():
|
def add_code_to_deserialize():
|
||||||
# sort fields (using a stable sort) as in the declaration of the type
|
add_deserialize_functions(spec.parsed_fields(), "")
|
||||||
sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True)
|
|
||||||
add_deserialize_functions(sorted_fields, "")
|
|
||||||
}@
|
}@
|
||||||
|
|
||||||
void serialize_@(topic_name)(ucdrBuffer *writer, const struct @(uorb_struct) *input, char *output, uint32_t *length)
|
void serialize_@(topic_name)(ucdrBuffer *writer, const struct @(uorb_struct) *input, char *output, uint32_t *length)
|
||||||
|
|||||||
@@ -78,10 +78,7 @@ def add_msg_field(field):
|
|||||||
|
|
||||||
|
|
||||||
def add_msg_fields():
|
def add_msg_fields():
|
||||||
# sort fields (using a stable sort) as in the declaration of the type
|
for field in spec.parsed_fields():
|
||||||
sorted_fields = sorted(spec.parsed_fields(),
|
|
||||||
key=sizeof_field_type, reverse=True)
|
|
||||||
for field in sorted_fields:
|
|
||||||
add_msg_field(field)
|
add_msg_field(field)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user