Skip to content

Commit

Permalink
fix size calculation for WStrings
Browse files Browse the repository at this point in the history
Signed-off-by: Dirk Thomas <[email protected]>
  • Loading branch information
dirk-thomas committed May 3, 2019
1 parent a09e9bb commit b14b895
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ size_t get_serialized_size_@('__'.join([package_name] + list(interface_path.pare
@[ if isinstance(member.type.value_type, AbstractWString)]@
2 *
@[ end if]@
array_ptr[index].size + 1;
(array_ptr[index].size + 1);
}
@[ elif isinstance(member.type.value_type, BasicType)]@
(void)array_ptr;
Expand All @@ -456,7 +456,7 @@ size_t get_serialized_size_@('__'.join([package_name] + list(interface_path.pare
@[ if isinstance(member.type, AbstractWString)]@
2 *
@[ end if]@
ros_message->@(member.name).size + 1;
(ros_message->@(member.name).size + 1);
@[ elif isinstance(member.type, BasicType)]@
{
size_t item_size = sizeof(ros_message->@(member.name));
Expand Down Expand Up @@ -520,15 +520,17 @@ if isinstance(type_, AbstractNestedType):
full_bounded = false;
for (size_t index = 0; index < array_size; ++index) {
current_alignment += padding +
@[ if type_.has_maximum_size()]@
eprosima::fastcdr::Cdr::alignment(current_alignment, padding) +
@[ if type_.has_maximum_size()]@
@[ if isinstance(type_, AbstractWString)]@
2 *
@[ end if]@
@(type_.maximum_size) + 1;
@[ else]@
eprosima::fastcdr::Cdr::alignment(current_alignment, padding) + 1;
@(type_.maximum_size) +
@[ end if]@
@[ if isinstance(type_, AbstractWString)]@
2 *
@[ end if]@
1;
}
@[ elif isinstance(type_, BasicType)]@
@[ if type_.typename in ('boolean', 'octet', 'char', 'uint8', 'int8')]@
Expand Down
17 changes: 11 additions & 6 deletions rosidl_typesupport_fastrtps_cpp/resource/msg__type_support.cpp.em
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ get_serialized_size(
@[ if isinstance(member.type.value_type, AbstractWString)]@
2 *
@[ end if]@
ros_message.@(member.name)[index].size() + 1;
(ros_message.@(member.name)[index].size() + 1);
}
@[ elif isinstance(member.type.value_type, BasicType)]@
size_t item_size = sizeof(ros_message.@(member.name)[0]);
Expand All @@ -308,7 +308,7 @@ get_serialized_size(
@[ if isinstance(member.type, AbstractWString)]@
2 *
@[ end if]@
ros_message.@(member.name).size() + 1;
(ros_message.@(member.name).size() + 1);
@[ elif isinstance(member.type, BasicType)]@
{
size_t item_size = sizeof(ros_message.@(member.name));
Expand Down Expand Up @@ -367,12 +367,17 @@ if isinstance(type_, AbstractNestedType):
full_bounded = false;
for (size_t index = 0; index < array_size; ++index) {
current_alignment += padding +
@[ if type_.has_maximum_size()]@
eprosima::fastcdr::Cdr::alignment(current_alignment, padding) +
@(type_.maximum_size) + 1;
@[ else]@
eprosima::fastcdr::Cdr::alignment(current_alignment, padding) + 1;
@[ if isinstance(type_, AbstractWString)]@
2 *
@[ end if]@
@[ if type_.has_maximum_size()]@
@(type_.maximum_size) +
@[ end if]@
@[ if isinstance(type_, AbstractWString)]@
2 *
@[ end if]@
1;
}
@[ elif isinstance(type_, BasicType)]@
@[ if type_.typename in ('boolean', 'octet', 'char', 'uint8', 'int8')]@
Expand Down

0 comments on commit b14b895

Please sign in to comment.