Kaydet (Commit) cc1798e0 authored tarafından Raymond Hettinger's avatar Raymond Hettinger

Improve the leak fix so that PyTuple_New is only called when needed.

üst deb2dc66
......@@ -105,7 +105,7 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
int stacksize;
int flags;
PyObject *co;
PyObject *empty;
PyObject *empty = NULL;
PyObject *code;
PyObject *consts;
PyObject *names;
......@@ -135,19 +135,21 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
return NULL;
}
empty = PyTuple_New(0);
if (empty == NULL)
return NULL;
if (freevars == NULL)
freevars = empty;
if (cellvars == NULL)
cellvars = empty;
if (freevars == NULL || cellvars == NULL) {
empty = PyTuple_New(0);
if (empty == NULL)
return NULL;
if (freevars == NULL)
freevars = empty;
if (cellvars == NULL)
cellvars = empty;
}
co = (PyObject *) PyCode_New(argcount, nlocals, stacksize, flags,
code, consts, names, varnames,
freevars, cellvars, filename, name,
firstlineno, lnotab);
Py_DECREF(empty);
Py_XDECREF(empty);
return co;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment