diff options
author | Georg Brandl <georg@python.org> | 2006-06-04 22:15:37 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2006-06-04 22:15:37 (GMT) |
commit | ad62489e4706ec4ad6cf24a067969e8d64612fcb (patch) | |
tree | c3c55cec5a9d63fbb278c0ddbedfbcab43c364fe /PC | |
parent | ddbaa660d3b64a71b4ac9eab64b1bb944ca1276b (diff) | |
download | cpython-ad62489e4706ec4ad6cf24a067969e8d64612fcb.zip cpython-ad62489e4706ec4ad6cf24a067969e8d64612fcb.tar.gz cpython-ad62489e4706ec4ad6cf24a067969e8d64612fcb.tar.bz2 |
Bug #1500293: fix memory leaks in _subprocess module.
Diffstat (limited to 'PC')
-rw-r--r-- | PC/_subprocess.c | 13 |
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* |