From 28a71c6567d08272dc9c1c2b32f0529f11f62b9e Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Fri, 10 Sep 2010 15:51:56 -0400 Subject: Fix memory leak in _sizeof implemented with _unserialize Signed-off-by: Peter Harris --- src/c_client.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/c_client.py b/src/c_client.py index 85ae09b..08d6ec4 100644 --- a/src/c_client.py +++ b/src/c_client.py @@ -1134,8 +1134,7 @@ def _c_serialize(context, self): return elif self.var_followed_by_fixed_fields: # special case: call _unserialize() - _c(' %s *_aux = NULL;', self.c_type) - _c(' return %s(%s, &_aux);', self.c_unserialize_name, reduce(lambda x,y: "%s, %s" % (x, y), param_names)) + _c(' return %s(%s, NULL);', self.c_unserialize_name, reduce(lambda x,y: "%s, %s" % (x, y), param_names)) _c('}') return else: @@ -1180,6 +1179,12 @@ def _c_serialize(context, self): # allocate memory and copy everything into a continuous memory area # note: this is not necessary in case of unpack if context in ('serialize', 'unserialize'): + # unserialize: check for sizeof-only invocation + if 'unserialize' == context: + _c('') + _c(' if (NULL == _aux)') + _c(' return xcb_buffer_len;') + _c('') _c(' if (NULL == %s) {', aux_ptr) _c(' /* allocate memory */') -- cgit v1.2.3