PR python/10953:
authorTom Tromey <tromey@redhat.com>
Mon, 23 Aug 2010 20:23:55 +0000 (20:23 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 23 Aug 2010 20:23:55 +0000 (20:23 +0000)
* python/py-type.c (typy_fields): Call check_typedef.
(typy_template_argument): Add TRY_CATCH.

gdb/ChangeLog
gdb/python/py-type.c

index 9aaa486ed15e11865159dee6c73a0b4d070722ba..37cf16a9c0e690f7927b9945b761c34144cf3c68 100644 (file)
@@ -1,3 +1,9 @@
+2010-08-23  Tom Tromey  <tromey@redhat.com>
+
+       PR python/10953:
+       * python/py-type.c (typy_fields): Call check_typedef.
+       (typy_template_argument): Add TRY_CATCH.
+
 2010-08-23  Tom Tromey  <tromey@redhat.com>
 
        PR python/11915:
index ea6c8e53cb454c27615466f4d88b9f4a7e4461a9..b3043109632d9c685c05e2c3820eafcc83c1f1ba 100644 (file)
@@ -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 --