[gi-ir-scanner] fails on certain union/anonymous structs
jessevdk@gmail.com
Submitted byLink to original bug (#678605)
Description
It seems g-ir-scanner does not correctly handle a certain anonymous union/struct constructs. It crashes on the following snippet of code:
typedef struct
{
union
{
gint32 dims[2];
struct
{
gint32 rows;
gint32 columns;
};
};
} CdnDimension;
typedef struct
{
union
{
CdnDimension dimension;
struct
{
gint32 rows;
gint32 columns;
};
};
guint *sparsity;
guint num_sparse;
} CdnStackArg;
I'm getting the following backtrace from g-ir-scanner:
GISCAN Cdn-3.0.gir
Traceback (most recent call last):
File "/usr/bin/g-ir-scanner", line 46, in `<module>`
sys.exit(scanner_main(sys.argv))
File "/usr/lib/gobject-introspection/giscanner/scannermain.py", line 427, in scanner_main
main.transform()
File "/usr/lib/gobject-introspection/giscanner/maintransformer.py", line 60, in transform
self._namespace.walk(self._pass_fixup_hidden_fields)
File "/usr/lib/gobject-introspection/giscanner/ast.py", line 456, in walk
node.walk(callback, [])
File "/usr/lib/gobject-introspection/giscanner/ast.py", line 532, in walk
res = callback(self, chain)
File "/usr/lib/gobject-introspection/giscanner/maintransformer.py", line 118, in _pass_fixup_hidden_fields
if (field.name.startswith('_')
AttributeError: 'NoneType' object has no attribute 'startswith'
I can currently "fix" the problem by using #ifdef __GI_SCANNER__
and defining those types without the union.