summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>1999-09-20 22:32:18 (GMT)
committerFred Drake <fdrake@acm.org>1999-09-20 22:32:18 (GMT)
commit2a6875e172ec8a8e1f712b3a0fd7c96bce319971 (patch)
tree2a3eeafff0c55e3c1f2b1b62f38a93d88ef6baad
parent675e994a2e400c747fbe2371f3281a7e2b729803 (diff)
downloadcpython-2a6875e172ec8a8e1f712b3a0fd7c96bce319971.zip
cpython-2a6875e172ec8a8e1f712b3a0fd7c96bce319971.tar.gz
cpython-2a6875e172ec8a8e1f712b3a0fd7c96bce319971.tar.bz2
parser__pickler(): Don't drop the third argument to
parser_ast2tuple(). Create an temporary empty dictionary to use. Bug reported by Mark Favas <m.favas@per.dem.csiro.au>. Fix a couple of comments.
-rw-r--r--Modules/parsermodule.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index c0a6c98..8e9ca7e 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -338,7 +338,7 @@ parser_free(ast)
} /* parser_free() */
-/* parser_ast2tuple(PyObject* self, PyObject* args)
+/* parser_ast2tuple(PyObject* self, PyObject* args, PyObject* kw)
*
* This provides conversion from a node* to a tuple object that can be
* returned to the Python-level caller. The AST object is not modified.
@@ -380,9 +380,9 @@ parser_ast2tuple(self, args, kw)
} /* parser_ast2tuple() */
-/* parser_ast2tuple(PyObject* self, PyObject* args)
+/* parser_ast2list(PyObject* self, PyObject* args, PyObject* kw)
*
- * This provides conversion from a node* to a tuple object that can be
+ * This provides conversion from a node* to a list object that can be
* returned to the Python-level caller. The AST object is not modified.
*
*/
@@ -2717,21 +2717,27 @@ parser__pickler(self, args)
NOTE(ARGUNUSED(self))
PyObject *result = NULL;
PyObject *ast = NULL;
+ PyObject *empty_dict = NULL;
if (PyArg_ParseTuple(args, "O!:_pickler", &PyAST_Type, &ast)) {
PyObject *newargs;
PyObject *tuple;
- if ((newargs = Py_BuildValue("Oi", ast, 1)) == NULL)
+ if ((empty_dict = PyDict_New()) == NULL)
+ goto finally;
+ if ((newargs = Py_BuildValue("Oi", ast, 1)) == NULL)
goto finally;
- tuple = parser_ast2tuple((PyAST_Object*)NULL, newargs);
+ tuple = parser_ast2tuple((PyAST_Object*)NULL, newargs, empty_dict);
if (tuple != NULL) {
result = Py_BuildValue("O(O)", pickle_constructor, tuple);
Py_DECREF(tuple);
}
+ Py_DECREF(empty_dict);
Py_DECREF(newargs);
}
finally:
+ Py_XDECREF(empty_dict);
+
return (result);
} /* parser__pickler() */