c_client.py: Do not create pointers in unions

Do not create pointers in unions for fields of variadic length.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com>
This commit is contained in:
Daniel Martin 2012-12-28 23:25:16 +01:00
parent b9efd2a09a
commit 0289348f2c

View File

@ -1787,12 +1787,12 @@ def _c_complex(self):
for field in struct_fields: for field in struct_fields:
length = len(field.c_field_type) length = len(field.c_field_type)
# account for '*' pointer_spec # account for '*' pointer_spec
if not field.type.fixed_size(): if not field.type.fixed_size() and not self.is_union:
length += 1 length += 1
maxtypelen = max(maxtypelen, length) maxtypelen = max(maxtypelen, length)
def _c_complex_field(self, field, space=''): def _c_complex_field(self, field, space=''):
if (field.type.fixed_size() or if (field.type.fixed_size() or self.is_union or
# in case of switch with switch children, don't make the field a pointer # in case of switch with switch children, don't make the field a pointer
# necessary for unserialize to work # necessary for unserialize to work
(self.is_switch and field.type.is_switch)): (self.is_switch and field.type.is_switch)):