[Xcb] [PATCH libxcb 3/4] generator: _c_accessor_get_length: remove buggy special case

Christian Linhart chris at demorecorder.com
Thu Sep 4 08:50:50 PDT 2014

The function _c_accessor_get_length had a special case handling
for intermixed var and fixed size fields.

* The implementation of that special case was buggy:
  It tried to call a python-dict as a function which causes
  Python to abort the program with a stacktrace and error message.
  So this code was never used.

* The case it tried to handle is handeled elsewhere in the
  meantime: in _c_helper_absolute_name by previous patches
  made by me.
 src/c_client.py | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/c_client.py b/src/c_client.py
index 4771bdd..bd14959 100644
--- a/src/c_client.py
+++ b/src/c_client.py
@@ -1566,20 +1566,15 @@ def _c_accessor_get_length(expr, field_mapping=None):
     lenfield_name = expr.lenfield_name
     if lenfield_name is not None:
         if field_mapping is not None:
             lenfield_name = field_mapping[lenfield_name][0]
-    if expr.lenfield is not None and expr.lenfield.prev_varsized_field is not None:
-        # special case: variable and fixed size fields are intermixed
-        # if the lenfield is among the fixed size fields, there is no need
-        # to call a special accessor function like <expr.lenfield.c_accessor_name + '(' + prefix + ')'>
-        return field_mapping(expr.lenfield_name)
-    elif expr.lenfield_name is not None:
+    if expr.lenfield_name is not None:
         return lenfield_name
         return str(expr.nmemb)
 def _c_accessor_get_expr(expr, field_mapping):
     Figures out what C code is needed to get the length of a list field.

More information about the Xcb mailing list