diff options
author | Armin Rigo <arigo@tunes.org> | 2016-09-20 15:07:37 +0200 |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2016-09-20 15:07:37 +0200 |
commit | d067b48aa4660487e050e396ff957d916d5183c4 (patch) | |
tree | de2d0d20c05b7f953228215a3ab70565c5ff0967 /cffi/cparser.py | |
parent | a06fe3e6a57efd4ec549234ad348152a40543439 (diff) | |
download | cffi-d067b48aa4660487e050e396ff957d916d5183c4.tar.gz |
typedef int foo_t[...];
Diffstat (limited to 'cffi/cparser.py')
-rw-r--r-- | cffi/cparser.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/cffi/cparser.py b/cffi/cparser.py index b49d8bd..47ed537 100644 --- a/cffi/cparser.py +++ b/cffi/cparser.py @@ -332,7 +332,7 @@ class Parser(object): realtype = model.unknown_ptr_type(decl.name) else: realtype, quals = self._get_type_and_quals( - decl.type, name=decl.name) + decl.type, name=decl.name, partial_length_ok=True) self._declare('typedef ' + decl.name, realtype, quals=quals) else: raise api.CDefError("unrecognized construct", decl) @@ -781,11 +781,14 @@ class Parser(object): exprnode.name in self._int_constants): return self._int_constants[exprnode.name] # - if partial_length_ok: - if (isinstance(exprnode, pycparser.c_ast.ID) and + if (isinstance(exprnode, pycparser.c_ast.ID) and exprnode.name == '__dotdotdotarray__'): + if partial_length_ok: self._partial_length = True return '...' + raise api.FFIError(":%d: unsupported '[...]' here, cannot derive " + "the actual array length in this context" + % exprnode.coord.line) # raise api.FFIError(":%d: unsupported expression: expected a " "simple numeric constant" % exprnode.coord.line) |