diff options
author | Fred Drake <fdrake@acm.org> | 1999-09-20 22:32:18 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1999-09-20 22:32:18 (GMT) |
commit | 2a6875e172ec8a8e1f712b3a0fd7c96bce319971 (patch) | |
tree | 2a3eeafff0c55e3c1f2b1b62f38a93d88ef6baad /Modules/parsermodule.c | |
parent | 675e994a2e400c747fbe2371f3281a7e2b729803 (diff) | |
download | cpython-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.
Diffstat (limited to 'Modules/parsermodule.c')
-rw-r--r-- | Modules/parsermodule.c | 16 |
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() */ |