From f951d72c50f27a312d02d2d8ebce0dce1710c400 Mon Sep 17 00:00:00 2001 From: tromey Date: Mon, 23 Aug 2010 20:23:54 +0000 Subject: [PATCH] PR python/10953: * python/py-type.c (typy_fields): Call check_typedef. (typy_template_argument): Add TRY_CATCH. --- gdb/ChangeLog | 6 ++++++ gdb/python/py-type.c | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 9aaa486ed1..37cf16a9c0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2010-08-23 Tom Tromey + PR python/10953: + * python/py-type.c (typy_fields): Call check_typedef. + (typy_template_argument): Add TRY_CATCH. + +2010-08-23 Tom Tromey + PR python/11915: * python/py-type.c (typy_array): New function. (type_object_methods): Add "array". diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index ea6c8e53cb..b304310963 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 -- -- 2.11.0