diff options
author | Tom Tromey <tromey@redhat.com> | 2010-08-23 20:23:55 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2010-08-23 20:23:55 +0000 |
commit | 05d0e1e74e28e8b02bd0a79c04a7a3f960b8000b (patch) | |
tree | 17cc48eaadaf850cba3d41a8e24c3d1e9901e52e /gdb/python | |
parent | 702c27113693b383728d0b423f58389544a80614 (diff) | |
download | fsf-binutils-gdb-05d0e1e74e28e8b02bd0a79c04a7a3f960b8000b.zip fsf-binutils-gdb-05d0e1e74e28e8b02bd0a79c04a7a3f960b8000b.tar.gz fsf-binutils-gdb-05d0e1e74e28e8b02bd0a79c04a7a3f960b8000b.tar.bz2 |
PR python/10953:
* python/py-type.c (typy_fields): Call check_typedef.
(typy_template_argument): Add TRY_CATCH.
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-type.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index ea6c8e5..b304310 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -216,6 +216,13 @@ typy_fields (PyObject *self, PyObject *args) PyObject *result; int i; struct type *type = ((type_object *) self)->type; + volatile struct gdb_exception except; + + TRY_CATCH (except, RETURN_MASK_ALL) + { + CHECK_TYPEDEF (type); + } + GDB_PY_HANDLE_EXCEPTION (except); /* We would like to make a tuple here, make fields immutable, and then memoize the result (and perhaps make Field.type() lazy). @@ -641,9 +648,13 @@ typy_template_argument (PyObject *self, PyObject *args) } } - type = check_typedef (type); - if (TYPE_CODE (type) == TYPE_CODE_REF) - type = check_typedef (TYPE_TARGET_TYPE (type)); + TRY_CATCH (except, RETURN_MASK_ALL) + { + type = check_typedef (type); + if (TYPE_CODE (type) == TYPE_CODE_REF) + type = check_typedef (TYPE_TARGET_TYPE (type)); + } + GDB_PY_HANDLE_EXCEPTION (except); /* We might not have DW_TAG_template_*, so try to parse the type's name. This is inefficient if we do not have a template type -- |