OSDN Git Service

PR python/10953:
authortromey <tromey>
Mon, 23 Aug 2010 20:23:54 +0000 (20:23 +0000)
committertromey <tromey>
Mon, 23 Aug 2010 20:23:54 +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 9aaa486..37cf16a 100644 (file)
@@ -1,5 +1,11 @@
 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:
        * python/py-type.c (typy_array): New function.
        (type_object_methods): Add "array".
index ea6c8e5..b304310 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 --