diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2017-05-02 06:03:35 +0200 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2017-05-02 06:03:35 +0200 |
commit | 85744f6db64f388ad2d2ceffcf3004d3372ca581 (patch) | |
tree | 82ca139cf829b023848d158f7a8893b2c85714c3 /psutil/_psutil_sunos.c | |
parent | 986fb8aeb82013bf9e18a0c006138f7d3032dfb7 (diff) | |
download | psutil-85744f6db64f388ad2d2ceffcf3004d3372ca581.tar.gz |
fix memleak
Diffstat (limited to 'psutil/_psutil_sunos.c')
-rw-r--r-- | psutil/_psutil_sunos.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/psutil/_psutil_sunos.c b/psutil/_psutil_sunos.c index 8e783d59..c205a3ac 100644 --- a/psutil/_psutil_sunos.c +++ b/psutil/_psutil_sunos.c @@ -123,6 +123,7 @@ psutil_proc_name_and_args(PyObject *self, PyObject *args) { const char *procfs_path; PyObject *py_name; PyObject *py_args; + PyObject *py_retlist; if (! PyArg_ParseTuple(args, "is", &pid, &procfs_path)) return NULL; @@ -130,18 +131,23 @@ psutil_proc_name_and_args(PyObject *self, PyObject *args) { if (! psutil_file_to_struct(path, (void *)&info, sizeof(info))) return NULL; - // TODO: probably have to Py_INCREF here. py_name = PyUnicode_DecodeFSDefault(info.pr_fname); if (!py_name) goto error; py_args = PyUnicode_DecodeFSDefault(info.pr_psargs); if (!py_args) goto error; - return Py_BuildValue("OO", py_name, py_args); + py_retlist = Py_BuildValue("OO", py_name, py_args); + if (!py_retlist) + goto error; + Py_DECREF(py_name); + Py_DECREF(py_args); + return py_retlist; error: Py_XDECREF(py_name); Py_XDECREF(py_args); + Py_XDECREF(py_retlist); return NULL; } |