diff options
author | Johan Dahlin <johan@gnome.org> | 2008-04-28 21:08:21 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-04-28 21:08:21 +0000 |
commit | b01ed146b04d718eb352d6321c374be1dcdb045f (patch) | |
tree | 90032b80bd51c90e797a453edb34d2583530d12f | |
parent | 248e8388f060b8f5e579a1047b87c6a0025c5bf3 (diff) | |
download | gobject-introspection-b01ed146b04d718eb352d6321c374be1dcdb045f.tar.gz |
Avoid recursion when scanning girepository.h
2008-04-28 Johan Dahlin <johan@gnome.org>
* giscanner/transformer.py (Transformer._traverse_one): Avoid recursion
when scanning girepository.h
* giscanner/sourcescanner.py (SourceScanner._preprocess): Define
a __GI_SCANNER__ when we run.
svn path=/trunk/; revision=254
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | giscanner/sourcescanner.py | 1 | ||||
-rw-r--r-- | giscanner/transformer.py | 4 |
3 files changed, 13 insertions, 0 deletions
@@ -1,3 +1,11 @@ +2008-04-28 Johan Dahlin <johan@gnome.org> + + * giscanner/transformer.py (Transformer._traverse_one): Avoid recursion + when scanning girepository.h + + * giscanner/sourcescanner.py (SourceScanner._preprocess): Define + a __GI_SCANNER__ when we run. + 2008-04-28 Johan Dahlin <jdahlin@async.com.br> * giscanner/ast.py: diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py index bf5613c0..583db6b7 100644 --- a/giscanner/sourcescanner.py +++ b/giscanner/sourcescanner.py @@ -140,6 +140,7 @@ class SourceScanner(object): 'cpp', '-C', '-U__GNUC__', + '-D__GI_SCANNER__', '-I.', ] cpp_args += self._cpp_options diff --git a/giscanner/transformer.py b/giscanner/transformer.py index 8816e7d0..98e6d04c 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -56,6 +56,10 @@ class Transformer(object): node = self._create_callback(symbol) elif symbol.base_type.type == giscanner.CTYPE_STRUCT: node = self._create_typedef_struct(symbol) + # This prevents an infinite recursion when scanning structures with + # private types not exposed in headers. + elif symbol.base_type.type == giscanner.CSYMBOL_TYPE_TYPEDEF: + return else: node = self._traverse_one(symbol, symbol.base_type.type) return node |