From d8130b5a56393a972f3c85f968007a5446b5cc41 Mon Sep 17 00:00:00 2001 From: incertia Date: Wed, 29 Oct 2025 18:59:36 -0400 Subject: [PATCH] c_client.py: use last field to get past the end of struct reply members Part-of: --- src/c_client.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/c_client.py diff --git a/src/c_client.py b/src/c_client.py old mode 100644 new mode 100755 index 8836306..541d222 --- a/src/c_client.py +++ b/src/c_client.py @@ -1920,7 +1920,15 @@ def _c_accessors_list(self, field): if switch_obj is not None: _c(' return %s;', fields[field.c_field_name][0]) elif field.prev_varsized_field is None: - _c(' return (%s *) (R + 1);', field.c_field_type) + prev_field = None + for f in R_obj.fields: + if f == field: + break + prev_field = f + if R_obj.is_reply: + _c(' return (%s *) (&R->%s + %d);', field.c_field_type, prev_field.c_field_name, prev_field.type.nmemb) + else: + _c(' return (%s *) (R + 1);', field.c_field_type) else: (prev_varsized_field, align_pad) = get_align_pad(field)