[Python-checkins] cpython: Issue #18520: Fix PyFunction_NewWithQualName() error handling
victor.stinner
python-checkins at python.org
Mon Jul 22 23:59:13 CEST 2013
http://hg.python.org/cpython/rev/9267a0b836b7
changeset: 84798:9267a0b836b7
user: Victor Stinner <victor.stinner at gmail.com>
date: Mon Jul 22 23:04:55 2013 +0200
summary:
Issue #18520: Fix PyFunction_NewWithQualName() error handling
files:
Objects/funcobject.c | 19 +++++++++----------
1 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/Objects/funcobject.c b/Objects/funcobject.c
--- a/Objects/funcobject.c
+++ b/Objects/funcobject.c
@@ -12,6 +12,12 @@
PyObject *doc, *consts, *module;
static PyObject *__name__ = NULL;
+ if (__name__ == NULL) {
+ __name__ = PyUnicode_InternFromString("__name__");
+ if (__name__ == NULL)
+ return NULL;
+ }
+
op = PyObject_GC_New(PyFunctionObject, &PyFunction_Type);
if (op == NULL)
return NULL;
@@ -26,6 +32,7 @@
op->func_defaults = NULL; /* No default arguments */
op->func_kwdefaults = NULL; /* No keyword only defaults */
op->func_closure = NULL;
+
consts = ((PyCodeObject *)code)->co_consts;
if (PyTuple_Size(consts) >= 1) {
doc = PyTuple_GetItem(consts, 0);
@@ -36,21 +43,13 @@
doc = Py_None;
Py_INCREF(doc);
op->func_doc = doc;
+
op->func_dict = NULL;
op->func_module = NULL;
op->func_annotations = NULL;
/* __module__: If module name is in globals, use it.
- Otherwise, use None.
- */
- if (!__name__) {
- __name__ = PyUnicode_InternFromString("__name__");
- if (!__name__) {
- Py_DECREF(op);
- return NULL;
- }
- }
-
+ Otherwise, use None. */
module = PyDict_GetItem(globals, __name__);
if (module) {
Py_INCREF(module);
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list