diff Python/Python-ast.c @ 78006:85cccc38d01c

add gc support to the AST base type (closes #15293)
author Benjamin Peterson <benjamin@python.org>
date Sun, 08 Jul 2012 11:03:46 -0700
parents 048d8d9aecf1
children ffb2fa900cb7
line wrap: on
line diff
--- a/Python/Python-ast.c	Sun Jul 08 17:50:42 2012 +0100
+++ b/Python/Python-ast.c	Sun Jul 08 11:03:46 2012 -0700
@@ -468,6 +468,19 @@
 }
 
 static int
+ast_traverse(AST_object *self, visitproc visit, void *arg)
+{
+    Py_VISIT(self->dict);
+    return 0;
+}
+
+static void
+ast_clear(AST_object *self)
+{
+    Py_CLEAR(self->dict);
+}
+
+static int
 ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
 {
     _Py_IDENTIFIER(_fields);
@@ -570,10 +583,10 @@
     PyObject_GenericGetAttr, /* tp_getattro */
     PyObject_GenericSetAttr, /* tp_setattro */
     0,                       /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, /* tp_flags */
     0,                       /* tp_doc */
-    0,                       /* tp_traverse */
-    0,                       /* tp_clear */
+    (traverseproc)ast_traverse, /* tp_traverse */
+    (inquiry)ast_clear,      /* tp_clear */
     0,                       /* tp_richcompare */
     0,                       /* tp_weaklistoffset */
     0,                       /* tp_iter */
@@ -589,7 +602,7 @@
     (initproc)ast_type_init, /* tp_init */
     PyType_GenericAlloc,     /* tp_alloc */
     PyType_GenericNew,       /* tp_new */
-    PyObject_Del,            /* tp_free */
+    PyObject_GC_Del,         /* tp_free */
 };