From 6222bb3acae2fb88bde2266d970f1f4ddfdce8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20L=C3=BCdtke?= Date: Wed, 12 Aug 2026 11:30:27 +0200 Subject: [PATCH 1/2] Add test case for services with buffer in the response only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mathias Lüdtke --- rosidl_generator_py/CMakeLists.txt | 1 + rosidl_generator_py/srv/GetBuffer.srv | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 rosidl_generator_py/srv/GetBuffer.srv diff --git a/rosidl_generator_py/CMakeLists.txt b/rosidl_generator_py/CMakeLists.txt index e5ff834f..e28afa99 100644 --- a/rosidl_generator_py/CMakeLists.txt +++ b/rosidl_generator_py/CMakeLists.txt @@ -49,6 +49,7 @@ if(BUILD_TESTING) msg/BuiltinTypeSequencesIdl.idl msg/StringArrays.msg msg/Property.msg + srv/GetBuffer.srv ADD_LINTER_TESTS SKIP_INSTALL ) diff --git a/rosidl_generator_py/srv/GetBuffer.srv b/rosidl_generator_py/srv/GetBuffer.srv new file mode 100644 index 00000000..51598241 --- /dev/null +++ b/rosidl_generator_py/srv/GetBuffer.srv @@ -0,0 +1,2 @@ +--- +uint8[] res From 9dbae598560552b71a50fb5a435850d78c710859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20L=C3=BCdtke?= Date: Mon, 24 Aug 2026 22:38:11 +0200 Subject: [PATCH 2/2] Always include stdint.h in generated C msg support files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mathias Lüdtke --- rosidl_generator_py/resource/_msg_support.c.em | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/rosidl_generator_py/resource/_msg_support.c.em b/rosidl_generator_py/resource/_msg_support.c.em index 62941b29..cc992179 100644 --- a/rosidl_generator_py/resource/_msg_support.c.em +++ b/rosidl_generator_py/resource/_msg_support.c.em @@ -29,14 +29,6 @@ def primitive_msg_type_to_c(type_): return BASIC_IDL_TYPES_TO_C[type_.typename] -# Check if this message has any uint8[] buffer fields -has_buffer_fields = False -for member in message.structure.members: - if isinstance(member.type, UnboundedSequence) and isinstance(member.type.value_type, BasicType) and member.type.value_type.typename == 'uint8': - has_buffer_fields = True - break - - include_parts = [package_name] + list(interface_path.parents[0].parts) + [ 'detail', convert_camel_case_to_lower_case_underscore(interface_path.stem)] include_base = '/'.join(include_parts) @@ -44,9 +36,8 @@ include_base = '/'.join(include_parts) header_files = [ 'Python.h', 'stdbool.h', + 'stdint.h', ] -if has_buffer_fields: - header_files.append('stdint.h') header_files += [ 'numpy/ndarrayobject.h', 'rosidl_runtime_c/visibility_control.h',