From: Daniel Martin Date: Fri, 28 Dec 2012 22:25:16 +0000 (+0100) Subject: c_client.py: Do not create pointers in unions X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0289348f2c4ed3b1b286c51df19d82c6787c2b36;p=free-sw%2Fxcb%2Flibxcb 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 Reviewed-by: Ran Benita --- diff --git a/src/c_client.py b/src/c_client.py index 2aba741..a6f8edd 100644 --- a/src/c_client.py +++ b/src/c_client.py @@ -1787,12 +1787,12 @@ def _c_complex(self): for field in struct_fields: length = len(field.c_field_type) # account for '*' pointer_spec - if not field.type.fixed_size(): + if not field.type.fixed_size() and not self.is_union: length += 1 maxtypelen = max(maxtypelen, length) 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 # necessary for unserialize to work (self.is_switch and field.type.is_switch)):