summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2003-09-15 21:43:16 (GMT)
committerRaymond Hettinger <python@rcn.com>2003-09-15 21:43:16 (GMT)
commit37a724d718072e0cdb7b9e773a7c0b9461b3eba1 (patch)
tree38a15199cf0d8b2beff22c7fa367e6e1bd539e17 /Python
parent1e4cf67c32f3885e07b14a146bc121e422075274 (diff)
downloadcpython-37a724d718072e0cdb7b9e773a7c0b9461b3eba1.zip
cpython-37a724d718072e0cdb7b9e773a7c0b9461b3eba1.tar.gz
cpython-37a724d718072e0cdb7b9e773a7c0b9461b3eba1.tar.bz2
Fix leak discovered in test_new by Michael Hudson.
Will backport to 2.3.1
Diffstat (limited to 'Python')
-rw-r--r--Python/compile.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 69a07af..f94a3ac 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -104,6 +104,8 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
int nlocals;
int stacksize;
int flags;
+ PyObject *co;
+ PyObject *empty;
PyObject *code;
PyObject *consts;
PyObject *names;
@@ -127,31 +129,26 @@ code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
&PyTuple_Type, &cellvars))
return NULL;
- if (freevars == NULL || cellvars == NULL) {
- PyObject *empty = PyTuple_New(0);
- if (empty == NULL)
- return NULL;
- if (freevars == NULL) {
- freevars = empty;
- Py_INCREF(freevars);
- }
- if (cellvars == NULL) {
- cellvars = empty;
- Py_INCREF(cellvars);
- }
- Py_DECREF(empty);
- }
-
if (!PyObject_CheckReadBuffer(code)) {
PyErr_SetString(PyExc_TypeError,
"bytecode object must be a single-segment read-only buffer");
return NULL;
}
- return (PyObject *)PyCode_New(argcount, nlocals, stacksize, flags,
+ 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);
+ firstlineno, lnotab);
+ Py_DECREF(empty);
+ return co;
}
static void
=loricooperhdf-patch-1'>loricooperhdf-patch-1Updated help desk URLLori Cooper2 years sel_io_chunk_cacheCommitting clang-format changesgithub-actions2 years [...] TagDownloadAuthorAge snapshotsnapshot.zip  snapshot.tar.gz  snapshot.tar.bz2  lrknox23 months snapshot-1.14snapshot-1.14.zip  snapshot-1.14.tar.gz  snapshot-1.14.tar.bz2  byrnHDF2 years hdf5-1_12_3hdf5-1_12_3.zip  hdf5-1_12_3.tar.gz  hdf5-1_12_3.tar.bz2  Larry Knox2 years snapshot-1.12snapshot-1.12.zip  snapshot-1.12.tar.gz  snapshot-1.12.tar.bz2  byrnHDF2 years hdf5-1_14_3hdf5-1_14_3.zip  hdf5-1_14_3.tar.gz  hdf5-1_14_3.tar.bz2  Larry Knox2 years hdf5-1_14_3-rc1hdf5-1_14_3-rc1.zip  hdf5-1_14_3-rc1.tar.gz  hdf5-1_14_3-rc1.tar.bz2  Larry Knox2 years snapshot-1.10snapshot-1.10.zip  snapshot-1.10.tar.gz  snapshot-1.10.tar.bz2  byrnHDF2 years hdf5-1_10_11hdf5-1_10_11.zip  hdf5-1_10_11.tar.gz  hdf5-1_10_11.tar.bz2  Larry Knox2 years hdf5-1_14_2hdf5-1_14_2.zip  hdf5-1_14_2.tar.gz  hdf5-1_14_2.tar.bz2  Larry Knox3 years hdf5-1_14_1-2hdf5-1_14_1-2.zip  hdf5-1_14_1-2.tar.gz  hdf5-1_14_1-2.tar.bz2  Larry Knox3 years [...] AgeCommit messageAuthorFilesLines 2022-04-08Sync branch with develop (#1616)feature/parallel_h5repackScot Breitenfeld