summaryrefslogtreecommitdiffstats
path: root/PC/_subprocess.c
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2006-06-04 22:15:37 (GMT)
committerGeorg Brandl <georg@python.org>2006-06-04 22:15:37 (GMT)
commitad62489e4706ec4ad6cf24a067969e8d64612fcb (patch)
treec3c55cec5a9d63fbb278c0ddbedfbcab43c364fe /PC/_subprocess.c
parentddbaa660d3b64a71b4ac9eab64b1bb944ca1276b (diff)
downloadcpython-ad62489e4706ec4ad6cf24a067969e8d64612fcb.zip
cpython-ad62489e4706ec4ad6cf24a067969e8d64612fcb.tar.gz
cpython-ad62489e4706ec4ad6cf24a067969e8d64612fcb.tar.bz2
Bug #1500293: fix memory leaks in _subprocess module.
Diffstat (limited to 'PC/_subprocess.c')
-rw-r--r--PC/_subprocess.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
index 2e724c6..c93f84b 100644
--- a/PC/_subprocess.c
+++ b/PC/_subprocess.c
@@ -250,19 +250,23 @@ static int
getint(PyObject* obj, char* name)
{
PyObject* value;
+ int ret;
value = PyObject_GetAttrString(obj, name);
if (! value) {
PyErr_Clear(); /* FIXME: propagate error? */
return 0;
}
- return (int) PyInt_AsLong(value);
+ ret = (int) PyInt_AsLong(value);
+ Py_DECREF(value);
+ return ret;
}
static HANDLE
gethandle(PyObject* obj, char* name)
{
sp_handle_object* value;
+ HANDLE ret;
value = (sp_handle_object*) PyObject_GetAttrString(obj, name);
if (! value) {
@@ -270,8 +274,11 @@ gethandle(PyObject* obj, char* name)
return NULL;
}
if (value->ob_type != &sp_handle_type)
- return NULL;
- return value->handle;
+ ret = NULL;
+ else
+ ret = value->handle;
+ Py_DECREF(value);
+ return ret;
}
static PyObject*