diff options
author | Collin Winter <collinw@gmail.com> | 2007-09-01 20:26:44 (GMT) |
---|---|---|
committer | Collin Winter <collinw@gmail.com> | 2007-09-01 20:26:44 (GMT) |
commit | 1966f1c98f32c482b16f1a9c1a36fc8e0628486b (patch) | |
tree | 32712f50c111e5cc456278f3ce868f36ee54f57d /Python | |
parent | 1963ad3126806672cf49ded8f524f105dcc72d33 (diff) | |
download | cpython-1966f1c98f32c482b16f1a9c1a36fc8e0628486b.zip cpython-1966f1c98f32c482b16f1a9c1a36fc8e0628486b.tar.gz cpython-1966f1c98f32c482b16f1a9c1a36fc8e0628486b.tar.bz2 |
Fix refleaks exposed by test_raise.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/ceval.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 24d4dec..fa08fe6 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2967,7 +2967,6 @@ do_raise(PyObject *exc, PyObject *cause) /* Not something you can raise. You get an exception anyway, just not what you specified :-) */ Py_DECREF(exc); - Py_XDECREF(cause); PyErr_SetString(PyExc_TypeError, "exceptions must derive from BaseException"); goto raise_error; @@ -2980,12 +2979,12 @@ do_raise(PyObject *exc, PyObject *cause) fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto raise_error; + Py_DECREF(cause); } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; } else { - Py_DECREF(cause); PyErr_SetString(PyExc_TypeError, "exception causes must derive from BaseException"); goto raise_error; @@ -3000,6 +2999,7 @@ raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); + Py_XDECREF(cause); return WHY_EXCEPTION; } |