[Xcb-commit] xcb/proto: xcbgen

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Mar 24 11:57:39 UTC 2020


 xcbgen/xtypes.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 2b3559c10c18eb63e61efdc8a030765d624a0fba
Author: Uli Schlachter <psychon at znc.in>
Date:   Sat Mar 21 11:12:52 2020 +0100

    Parse a field's "enum=" correctly
    
    In xv.xml, there is something like this:
    
      <struct name="ImageFormatInfo">
        [...]
        <field type="CARD8" name="byte_order" enum="ImageOrder" />
        <pad bytes="2" />
        <list type="CARD8" name="guid">
          <value>16</value>
        </list>
        [...]
      </struct>
    
    When parsing this, the Field instance for "guid" ended up with .enum ==
    "ImageOrder". This is because the loop that parses complex type did not
    unset a variable across iterations, meaning that the last "enum"
    property "stuck" and was also used for all following fields.
    
    Fix this by simply moving the initialisation of the "enum" variable
    inside of the loop.
    
    Signed-off-by: Uli Schlachter <psychon at znc.in>

diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py
index 3afc812..e47189d 100644
--- a/xcbgen/xtypes.py
+++ b/xcbgen/xtypes.py
@@ -528,10 +528,10 @@ class ComplexType(Type):
     def resolve(self, module):
         if self.resolved:
             return
-        enum = None
 
         # Resolve all of our field datatypes.
         for child in list(self.elt):
+            enum = None
             if child.tag == 'pad':
                 field_name = 'pad' + str(module.pads)
                 fkey = 'CARD8'


More information about the xcb-commit mailing list