diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-03-02 00:31:27 +0000 |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-03-02 00:31:27 +0000 |
commit | e6964c67a6ce21aa14dc39d6b9fadc0160e30f47 (patch) | |
tree | 6ae7a3b52c1a573aae217da971346beb47eb6693 /Python/Python-ast.c | |
parent | 43cb66f76069dd104c83a9577ab05c1133f0c9e7 (diff) | |
download | cpython-e6964c67a6ce21aa14dc39d6b9fadc0160e30f47.tar.gz |
Fix memory leak on attributes.
Diffstat (limited to 'Python/Python-ast.c')
-rw-r--r-- | Python/Python-ast.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 3e49212a04..3f8345ebf4 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -2324,10 +2324,14 @@ ast2obj_stmt(void* _o) } value = ast2obj_int(o->lineno); if (!value) goto failed; - PyObject_SetAttrString(result, "lineno", value); + if (PyObject_SetAttrString(result, "lineno", value) < 0) + goto failed; + Py_DECREF(value); value = ast2obj_int(o->col_offset); if (!value) goto failed; - PyObject_SetAttrString(result, "col_offset", value); + if (PyObject_SetAttrString(result, "col_offset", value) < 0) + goto failed; + Py_DECREF(value); return result; failed: Py_XDECREF(value); @@ -2643,10 +2647,14 @@ ast2obj_expr(void* _o) } value = ast2obj_int(o->lineno); if (!value) goto failed; - PyObject_SetAttrString(result, "lineno", value); + if (PyObject_SetAttrString(result, "lineno", value) < 0) + goto failed; + Py_DECREF(value); value = ast2obj_int(o->col_offset); if (!value) goto failed; - PyObject_SetAttrString(result, "col_offset", value); + if (PyObject_SetAttrString(result, "col_offset", value) < 0) + goto failed; + Py_DECREF(value); return result; failed: Py_XDECREF(value); @@ -3023,7 +3031,7 @@ init_ast(void) if (PyDict_SetItemString(d, "AST", (PyObject*)AST_type) < 0) return; if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) return; - if (PyModule_AddStringConstant(m, "__version__", "42649") < 0) + if (PyModule_AddStringConstant(m, "__version__", "42753") < 0) return; if(PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return; if(PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) |